Add schemeNumber part of javascript-bignum library

This commit is contained in:
Nathan Shively-Sanders
2015-12-16 09:55:29 -08:00
parent 11322524f8
commit f2a49a6916
2 changed files with 74 additions and 0 deletions
@@ -0,0 +1,21 @@
/// <reference path="javascript-bignum.d.ts"/>
let m = SchemeNumber("1");
let n = SchemeNumber(2);
let sum: SchemeNumber = SchemeNumber.fn["+"](m, n);
sum = SchemeNumber.fn["+"](m, 1);
sum = SchemeNumber.fn["+"](m, "12");
sum = SchemeNumber.fn["+"]("12", "25");
let floored: SchemeNumber = SchemeNumber.fn.floor(m);
let str: string = floored.toString(16);
str = floored.toExponential(2);
str = floored.toPrecision(2);
str = floored.toFixed(2);
let num: number = maxIntegerDigits;
num = VERSION[0];
num = VERSION.length;
raise("fake error", "This is not really an error", m);
+53
View File
@@ -0,0 +1,53 @@
// Type definitions for javascript-bignum
// Project: https://github.com/jtobey/javascript-bignum
// Definitions by: Nathan Shively-Sanders <https://github.com/sandersn>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
// Documentation: http://john-edwin-tobey.org/Scheme/javascript-bignum/docs/files/schemeNumber-js.html
// This version only includes typing for schemeNumber, not the full library
declare type SchemeOperator = (...args: (string | SchemeNumber | number)[]) => SchemeNumber;
declare var VERSION: number[];
declare function raise(conditionType: string, message: string, ...irritants: any[]): void;
declare var maxIntegerDigits: number;
declare interface SchemeFn {
[opname: string]: SchemeOperator;
inexact: SchemeOperator;
exact: SchemeOperator;
max: SchemeOperator;
min: SchemeOperator;
abs: SchemeOperator;
div: SchemeOperator;
mod: SchemeOperator;
div0: SchemeOperator;
mod0: SchemeOperator;
gcd: SchemeOperator;
lcm: SchemeOperator;
numerator: SchemeOperator;
denominator: SchemeOperator;
floor: SchemeOperator;
ceiling: SchemeOperator;
truncate: SchemeOperator;
round: SchemeOperator;
rationalize: SchemeOperator;
exp: SchemeOperator;
log: SchemeOperator;
sin: SchemeOperator;
cos: SchemeOperator;
tan: SchemeOperator;
asin: SchemeOperator;
acos: SchemeOperator;
atan: SchemeOperator;
sqrt: SchemeOperator;
expt: SchemeOperator;
magnitude: SchemeOperator;
angle: SchemeOperator;
}
declare interface SchemeNumber {
(value: string | number): SchemeNumber;
toString(radix: number): string;
toFixed(fractionDigits: number): string;
toExponential(fractionDigits: number): string;
toPrecision(precision: number): string;
fn: SchemeFn;
}
declare var SchemeNumber: SchemeNumber;