//  [python]
def DeclareEquations(self):
        daeModel.DeclareEquations(self)

        # Supported functions:
        # - operators +, -, *, /, **
        # - sqrt, exp, log, log10, sin, cos, tan, arcsin, arccos, arctan, fabs, ceil, floor
        # - sum, cumsum[], prod, cumprod[], diff, ediff1d, cross, trapz, square
        """
        res = u ** 3
        print res
        res = numpy.sum(u)
        print res
        res = numpy.cumsum(u)
        print res
        res = numpy.prod(u)
        print res
        res = numpy.cumprod(u)
        print res
        res = numpy.diff(u)
        print res
        res = numpy.ediff1d(u)
        print res
        res = numpy.cross(u[0:3], u[0:3]) # dimensions of vectors must be 2 or 3
        print res
        res = numpy.trapz(u, [0.1, 0.2, 0.4, 0.7, 1.1])
        print res
        res = numpy.square(u)
        print res
        """

        du = self.p.array('*')
        
        u = numpy.empty(self.N, dtype=object)
        u[:] = [self.p(i) for i in range(self.N)]
        
        # sum
        eq = self.CreateEquation("test_0")
        if self.useNumpy:
            eq.Residual = self.t0() + numpy.sum(u)
        else:
            eq.Residual = self.t0() + Sum(du)

        eq = self.CreateEquation("test_1")
        if self.useNumpy:
            eq.Residual = self.t1() + numpy.prod(u)
        else:
            eq.Residual = self.t1() + Product(du)

        eq = self.CreateEquation("test_2")
        if self.useNumpy:
            eq.Residual = self.t2() + numpy.sum(numpy.sqrt(u))
        else:
            eq.Residual = self.t2() + Sum(Sqrt(du))

        eq = self.CreateEquation("test_3")
        if self.useNumpy:
            eq.Residual = self.t3() + numpy.sum(numpy.exp(u))
        else:
            eq.Residual = self.t3() + Sum(Exp(du))

        eq = self.CreateEquation("test_4")
        if self.useNumpy:
            eq.Residual = self.t4() + numpy.sum(numpy.log(u))
        else:
            eq.Residual = self.t4() + Sum(Log(du))

        eq = self.CreateEquation("test_5")
        if self.useNumpy:
            eq.Residual = self.t5() + numpy.sum(numpy.log10(u))
        else:
            eq.Residual = self.t5() + Sum(Log10(du))

        eq = self.CreateEquation("test_6")
        if self.useNumpy:
            eq.Residual = self.t6() + numpy.sum(numpy.sin(u))
        else:
            eq.Residual = self.t6() + Sum(Sin(du))

        eq = self.CreateEquation("test_7")
        if self.useNumpy:
            eq.Residual = self.t7() + numpy.sum(numpy.cos(u))
        else:
            eq.Residual = self.t7() + Sum(Cos(du))

        eq = self.CreateEquation("test_8")
        if self.useNumpy:
            eq.Residual = self.t8() + numpy.sum(numpy.tan(u))
        else:
            eq.Residual = self.t8() + Sum(Tan(du))

        eq = self.CreateEquation("test_9")
        if self.useNumpy:
            eq.Residual = self.t9() + numpy.sum(numpy.fabs(u))
        else:
            eq.Residual = self.t9() + Sum(Abs(du))

        eq = self.CreateEquation("test_10")
        eq.Residual = self.t10() + Sum(Ceil(du))

        eq = self.CreateEquation("test_11")
        eq.Residual = self.t11() + Sum(Floor(du))

        eq = self.CreateEquation("test_12")
        if self.useNumpy:
            eq.Residual = self.t12() + numpy.sum(u + u)
        else:
            eq.Residual = self.t12() + Sum(du + du)

        eq = self.CreateEquation("test_13")
        if self.useNumpy:
            eq.Residual = self.t13() + numpy.sum(u - u)
        else:
            eq.Residual = self.t13() + Sum(du - du)

        eq = self.CreateEquation("test_14")
        if self.useNumpy:
            eq.Residual = self.t14() + numpy.sum(u * u)
        else:
            eq.Residual = self.t14() + Sum(du * du)

        eq = self.CreateEquation("test_15")
        if self.useNumpy:
            eq.Residual = self.t15() + numpy.sum(u / u)
        else:
            eq.Residual = self.t15() + Sum(du / du)

        eq = self.CreateEquation("test_16")
        if self.useNumpy:
            eq.Residual = self.t16() + numpy.sum(numpy.reciprocal(u))
        else:
            eq.Residual = self.t16() + Sum(1 / du)
        
        eq = self.CreateEquation("test_17")
        if self.useNumpy:
            eq.Residual = self.t17() + numpy.sum(numpy.negative(u))
        else:
            eq.Residual = self.t17() + Sum(-du)