def getComputationDescription(keyStr):
    '''Retreives the relevant record from the database'''
    if keyStr in generic_computation_description:
        return generic_computation_description[keyStr]
    else:
        error_reporter.reportProgramError("sympy_actions.py:getFunction :- Cannot find an entry with the given key: \'"+keyStr+"\'")
        exit()
Ejemplo n.º 2
0
def updateWithResult(keyStr, symObjKeys, res):
    computationType = generic_cas_computations.getComputationType(keyStr)
    if computationType == generic_cas_computations.compTypeEnum.newObject:
        symbolic_object_list.addObjectWithLinks(res, keyStr, symObjKeys)
    elif computationType == generic_cas_computations.compTypeEnum.newProperty:
        res.addInRelation(keyStr, symObjKeys)
        symbolic_object_list.addObject(res)
        for sObj in symObjKeys:
            symbolic_object_list.getObj(sObj).addProperty(keyStr, symObjKeys+[res.getKeyID()], res)
    else:
        error_reporter.reportProgramError("compute.py:updateWithResult :- Invalid type of computation. It is neither a newProperty nor a newObject.")

#x = sympy.Symbol('x')
#print compute('S-break into partial fractions', [sympy.sin(x)**2 + sympy.cos(x)**2 + 2*sympy.sin(x)*sympy.cos(x)])
Ejemplo n.º 3
0
def getFunction(keyStr):
    if keyStr in sympy_action_implementation:
        noArgs = generic_cas_computations.getNoArgs(keyStr)
        if noArgs == 1:
            return lambda x: symbolic_object.symbolicObject(
                sympy_action_implementation[keyStr](x.getComputableObject())
            )
        elif noArgs == 2:
            return lambda x, y: symbolic_object.symbolicObject(
                sympy_action_implementation[keyStr](x.getComputableObject(), y.getComputableObject())
            )
        else:
            error_reporter.reportProgramError(
                "sympy_actions.py:getFunction :- An unhandled number of arguments are required: " + noArgs
            )
    else:
        error_reporter.reportProgramError(
            "sympy_actions.py:getFunction :- Cannot find an entry with the given key: '" + keyStr + "'"
        )
Ejemplo n.º 4
0
def computeResult(keyStr, args):
    '''Calls the relevant function to perform the computation.

        @param keyStr - the key string identifying the computation (operation)
        @param args - the keys of the object on which to apply the computation'''
    noArgs = generic_cas_computations.getNoArgs(keyStr)

    if len(args) > 2:
        error_reporter.reportProgramError("sympy_act.py:compute :- This function does not yet handle arguments of length greater than 2. noArgs = "+noArgs+", arge.length = "+len(args))
        return
    elif len(args) != noArgs:
        error_reporter.reportProgramError("sympy_act.py:compute :- Number of arguments given does not match expected number of arguments. noArgs = "+noArgs+", len(args) = "+len(args))
        return
    
    try:
        if noArgs == 1:
            return generic_cas_computations.getFunction(keyStr)(args[0]) #sympy_computation_list.getFunction(keyStr)(args[0])
        if noArgs == 2:
            return generic_cas_computations.getFunction(keyStr)(args[0], args[1]) #sympy_computation_list.getFunction(keyStr)(args[0], args[1])
    except NotImplementedError:
        return []
Ejemplo n.º 5
0
 def getKeyID(self):
     try:
         keyID = self.keyID
     except AttributeError:
         error_reporter.reportProgramError("symbolic_object_sympy.py:symPySymbolicObject:getKeyID :- Tried to access keyID before initializing it.")
     return keyID