def lagval(x, c, tensor=True):
c = np.array(c, ndmin=<NUM_LIT:1>, copy=<NUM_LIT:0>)<EOL>if c.dtype.char in '<STR_LIT>':<EOL><INDENT>c = c.astype(np.double)<EOL><DEDENT>if isinstance(x, (tuple, list)):<EOL><INDENT>x = np.asarray(x)<EOL><DEDENT>if isinstance(x, np.ndarray) and tensor:<EOL><INDENT>c = c.reshape(c.shape + (<NUM_LIT:1>,)*x.ndim)<EOL><DEDENT>if len(c) == <NUM_LIT:1>:<EOL><INDENT>c0 = c[<NUM_LIT:0>]<EOL>c1 = <NUM_LIT:0><EOL><DEDENT>elif len(c) == <NUM_LIT:2>:<EOL><INDENT>c0 = c[<NUM_LIT:0>]<EOL>c1 = c[<NUM_LIT:1>]<EOL><DEDENT>else:<EOL><INDENT>nd = len(c)<EOL>c0 = c[-<NUM_LIT:2>]<EOL>c1 = c[-<NUM_LIT:1>]<EOL>for i in range(<NUM_LIT:3>, len(c) + <NUM_LIT:1>):<EOL><INDENT>tmp = c0<EOL>nd = nd - <NUM_LIT:1><EOL>c0 = c[-i] - (c1*(nd - <NUM_LIT:1>))/nd<EOL>c1 = tmp + (c1*((<NUM_LIT:2>*nd - <NUM_LIT:1>) - x))/nd<EOL><DEDENT><DEDENT>return c0 + c1*(<NUM_LIT:1> - x)<EOL>
Evaluate a Laguerre series at points x.

If `c` is of length `n + 1`, this function returns the value:

.. math:: p(x) = c_0 * L_0(x) + c_1 * L_1(x) + ... + c_n * L_n(x)

The parameter `x` is converted to an array only if it is a tuple or a
list, otherwise it is treated as a scalar. In either case, either `x`
or its elements must support multiplication and addition both with
themselves and with the elements of `c`.

If `c` is a 1-D array, then `p(x)` will have the same shape as `x`.  If
`c` is multidimensional, then the shape of the result depends on the
value of `tensor`. If `tensor` is true the shape will be c.shape[1:] +
x.shape. If `tensor` is false the shape will be c.shape[1:]. Note that
scalars have shape (,).

Trailing zeros in the coefficients will be used in the evaluation, so
they should be avoided if efficiency is a concern.

Parameters
----------
x : array_like, compatible object
    If `x` is a list or tuple, it is converted to an ndarray, otherwise
    it is left unchanged and treated as a scalar. In either case, `x`
    or its elements must support addition and multiplication with
    with themselves and with the elements of `c`.
c : array_like
    Array of coefficients ordered so that the coefficients for terms of
    degree n are contained in c[n]. If `c` is multidimensional the
    remaining indices enumerate multiple polynomials. In the two
    dimensional case the coefficients may be thought of as stored in
    the columns of `c`.
tensor : boolean, optional
    If True, the shape of the coefficient array is extended with ones
    on the right, one for each dimension of `x`. Scalars have dimension 0
    for this action. The result is that every column of coefficients in
    `c` is evaluated for every element of `x`. If False, `x` is broadcast
    over the columns of `c` for the evaluation.  This keyword is useful
    when `c` is multidimensional. The default value is True.

    .. versionadded:: 1.7.0

Returns
-------
values : ndarray, algebra_like
    The shape of the return value is described above.

See Also
--------
lagval2d, laggrid2d, lagval3d, laggrid3d

Notes
-----
The evaluation uses Clenshaw recursion, aka synthetic division.

Examples
--------
>>> from numpy.polynomial.laguerre import lagval
>>> coef = [1,2,3]
>>> lagval(1, coef)
-0.5
>>> lagval([[1,2],[3,4]], coef)
array([[-0.5, -4. ],
       [-4.5, -2. ]])