This should eventually be moved into typed-function itself, but for
now it can be implemented on top of the existing typed-function.
Uses subtypes to define (and error-check) gcd and lcm, which are only
defined for integer arguments.
Resolves#36.
This allows types to be collected; prior to this commit they
were conflicting from different modules.
Uses this fix to extend sqrt to bigint, with the convention
that it is undefined for non-perfect squares when 'predictable'
is false and is the "best" approximation to the square root when
'predictable' is true. Furthermore, for negative bigints, you might
get a Gaussian integer when predictable is false; or you will just get
your argument back when 'predictable' is true because what other
bigint could you give back for a negative bigint?
Also had to modify tests on the sign in sqrt(Complex) and add functions
'zero' and 'one' to get types to match, as expected in #27.
Adds numerous tests.
Resolves#26.
Resolves#27.
Allows dependencies to be economically expressed and used.
For example, see the new definition of subtract.
Credit for the basic idea goes to James Drew, see
https://stackoverflow.com/a/41525264Resolves#21.
Also starts each PocomathInstance with no types at all, and uses the new
situation to eliminate the need for a Complex "base case".
Resolves#14.
Resolves#13.
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Reviewed-on: #15