def svd_norm(input, porder, axis=[(- 1)]):
    '\n        NOTE:\n            Calculate the matrix norm, which is related to singular values, of a matrix\n            or batches of matrices, including nuclear norm, 2-norm and (-2)-norm.\n        '
    reduce_all = (True if ((axis is None) or (axis == [])) else False)
    keepdim = False
    (u, s, vh) = svd(input, full_matrices=False)
    if paddle.in_dynamic_mode():
        if (porder == 'nuc'):
            return _C_ops.reduce_sum(s, 'dim', axis, 'keepdim', keepdim, 'reduce_all', reduce_all)
        max_out = _C_ops.reduce_max(s, 'dim', axis, 'keepdim', keepdim, 'reduce_all', reduce_all)
        min_out = _C_ops.reduce_min(s, 'dim', axis, 'keepdim', keepdim, 'reduce_all', reduce_all)
        if (porder == 2):
            return _C_ops.elementwise_div(max_out, min_out, 'aixs', axis, 'use_mkldnn', False)
        if (porder == (- 2)):
            return _C_ops.elementwise_div(min_out, max_out, 'aixs', axis, 'use_mkldnn', False)
    block = LayerHelper('norm', **locals())
    out = block.create_variable_for_type_inference(dtype=block.input_dtype())
    if (porder == 'nuc'):
        block.append_op(type='reduce_sum', inputs={'X': s}, outputs={'Out': out}, attrs={'dim': axis, 'keep_dim': keepdim, 'reduce_all': reduce_all})
        return out
    max_out = block.create_variable_for_type_inference(dtype=block.input_dtype())
    min_out = block.create_variable_for_type_inference(dtype=block.input_dtype())
    block.append_op(type='reduce_max', inputs={'X': s}, outputs={'Out': max_out}, attrs={'dim': axis, 'keep_dim': keepdim, 'reduce_all': reduce_all})
    block.append_op(type='reduce_min', inputs={'X': s}, outputs={'Out': min_out}, attrs={'dim': axis, 'keep_dim': keepdim, 'reduce_all': reduce_all})
    if (porder == 2):
        block.append_op(type='elementwise_div', inputs={'X': max_out, 'Y': min_out}, outputs={'Out': out}, attrs={'aixs': axis, 'use_mkldnn': False})
        return out
    if (porder == (- 2)):
        block.append_op(type='elementwise_div', inputs={'X': min_out, 'Y': max_out}, outputs={'Out': out}, attrs={'aixs': axis, 'use_mkldnn': False})
        return out
NOTE:
    Calculate the matrix norm, which is related to singular values, of a matrix
    or batches of matrices, including nuclear norm, 2-norm and (-2)-norm.
def svd_norm(input, porder, axis=[(- 1)]):
    '\n        NOTE:\n            Calculate the matrix norm, which is related to singular values, of a matrix\n            or batches of matrices, including nuclear norm, 2-norm and (-2)-norm.\n        '
    reduce_all = (True if ((axis is None) or (axis == [])) else False)
    keepdim = False
    (u, s, vh) = svd(input, full_matrices=False)
    if paddle.in_dynamic_mode():
        if (porder == 'nuc'):
            return _C_ops.reduce_sum(s, 'dim', axis, 'keepdim', keepdim, 'reduce_all', reduce_all)
        max_out = _C_ops.reduce_max(s, 'dim', axis, 'keepdim', keepdim, 'reduce_all', reduce_all)
        min_out = _C_ops.reduce_min(s, 'dim', axis, 'keepdim', keepdim, 'reduce_all', reduce_all)
        if (porder == 2):
            return _C_ops.elementwise_div(max_out, min_out, 'aixs', axis, 'use_mkldnn', False)
        if (porder == (- 2)):
            return _C_ops.elementwise_div(min_out, max_out, 'aixs', axis, 'use_mkldnn', False)
    block = LayerHelper('norm', **locals())
    out = block.create_variable_for_type_inference(dtype=block.input_dtype())
    if (porder == 'nuc'):
        block.append_op(type='reduce_sum', inputs={'X': s}, outputs={'Out': out}, attrs={'dim': axis, 'keep_dim': keepdim, 'reduce_all': reduce_all})
        return out
    max_out = block.create_variable_for_type_inference(dtype=block.input_dtype())
    min_out = block.create_variable_for_type_inference(dtype=block.input_dtype())
    block.append_op(type='reduce_max', inputs={'X': s}, outputs={'Out': max_out}, attrs={'dim': axis, 'keep_dim': keepdim, 'reduce_all': reduce_all})
    block.append_op(type='reduce_min', inputs={'X': s}, outputs={'Out': min_out}, attrs={'dim': axis, 'keep_dim': keepdim, 'reduce_all': reduce_all})
    if (porder == 2):
        block.append_op(type='elementwise_div', inputs={'X': max_out, 'Y': min_out}, outputs={'Out': out}, attrs={'aixs': axis, 'use_mkldnn': False})
        return out
    if (porder == (- 2)):
        block.append_op(type='elementwise_div', inputs={'X': min_out, 'Y': max_out}, outputs={'Out': out}, attrs={'aixs': axis, 'use_mkldnn': False})
        return out