'Returns the first derivative of the function.'

def fdiff(self, argindex=1):

    if (not (1 <= argindex <= len(self.args))):
        raise ArgumentIndexError(self, argindex)
    if self.args[(argindex - 1)].is_Symbol:
        for i in range(len(self.args)):
            if (i == (argindex - 1)):
                continue
            if (self.args[(argindex - 1)] in self.args[i].free_symbols):
                break
        else:
            return Derivative(self, self.args[(argindex - 1)], evaluate=False)
    arg_dummy = Dummy(('xi_%i' % argindex), dummy_index=hash(self.args[(argindex - 1)]))
    new_args = [arg for arg in self.args]
    new_args[(argindex - 1)] = arg_dummy
    return Subs(Derivative(self.func(*new_args), arg_dummy), arg_dummy, self.args[(argindex - 1)])
