This repository was archived by the owner on Dec 12, 2022. It is now read-only.
-
Couldn't load subscription status.
- Fork 0
Code Examples
Derk Norton edited this page Jan 23, 2019
·
52 revisions
// import the framework module
const bali = require('bali-component-framework');
// constructors
const zero = new bali.Angle(); // defaults to zero
const pi = bali.parse('~pi'); // default units are radians
const piOver4 = new bali.Angle(bali.precision.PI/4); // from raw value
const fortyFive = bali.Angle.fromLiteral('~45', bali.degrees); // explicit declaration of units
const oneEighty = bali.parse('~180($units: $degrees)'); // from full source string
const minusPi = bali.Angle.fromLiteral('~-pi'); // normalized to ~pi
// conversions
zero.toBoolean(); // returns false
zero.toNumber(); // returns 0
pi.toBoolean(); // returns true
bali.format(pi); // returns '~pi'
piOver4.toBoolean(); // returns true
fortyFive.toLiteral(bali.degrees); // returns '~45'
oneEighty.toString(); // returns '~180($units: $degrees)'
// comparisons
piOver4.isEqualTo(fortyFive); // returns true
zero.comparedTo(piOver4); // return -1
oneEighty.comparedTo(fortyFive); // return 1
minusPi.isEqualTo(pi); // returns true because of the normalization
// angular operations
bali.Angle.inverse(fortyFive).toLiteral(bali.degrees); // returns '~-135'
bali.Angle.complement(zero).toLiteral(bali.degrees); // returns '~90'
bali.Angle.supplement(pi).toNumber(); // returns 0
bali.Angle.conjugate(fortyFive).toLiteral(bali.degrees); // returns '~-45'
// arithmetic operations
bali.Angle.sum(fortyFive, fortyFive).toLiteral(bali.degrees); // returns '~90'
bali.Angle.difference(pi, fortyFive).toLiteral(bali.degrees); // returns '~135'
bali.Angle.scaled(fortyFive, 4).toLiteral(); // returns '~pi'
// trigonometric operations
bali.Angle.sine(pi); // returns 0
bali.Angle.cosine(fortyFive); // returns 0.7071067811865476
bali.Angle.tangent(fortyFive); // returns 1
bali.Angle.arcsine(-1).toLiteral(bali.degrees); // returns '~-90'
bali.Angle.arccosine(1).toLiteral(bali.degrees); // returns '~0'
bali.Angle.arctangent(1, -1).toLiteral(bali.degrees); // returns '~135'// import the framework module
const bali = require('bali-component-framework');
// constructors
const empty = new bali.Binary(); // defaults to an empty base 32 binary string
const d27159 = bali.Binary.fromLiteral("'0110101000010111'", bali.base2); // base 2 binary string
const d50350 = bali.Binary.fromLiteral("'1100010010101110'", bali.base2); // base 2 binary string
const h6A17 = bali.Binary.fromLiteral("'6A17'", bali.base16); // base 16 binary string
const r32 = bali.Binary.fromRandom(40); // a new random 40 byte base 32 binary string
const jpeg = bali.parse("'\n" +
"2OGj/83okC3Ic/Qd7sWqTDCbAKUoNNsnpD1ccS1C8Vg4AWlr5v23ekPsPJai\n" +
"LWpNINAvKZjSiugx3Yp/iOidbolTexeVRt1etX+nem9ozwG5eG4wN7ul8edO\n" +
"QJvxWZ2KVkBqqWp1gqEo6gSfy5DXL3N/OPJIM/iVuWv49irzowhliOCW7NrO\n" +
"a6hbC6o4P+yA2AnUeaNwRwYgB6Wu1P4aJe3eWDBRo8lsh6Aq9nR5XHo3hcj1\n" +
"BIVadYxy+fV9LQN0S8rIXg1MBIymT3KVdgEGUmNX5I+g9t5rOEFANMrma5Sv\n" +
"uPs6YHNa9Mq3qWlnMyw2mzAVTaK5Q5DTvDaC0A8fwg==\n" +
"'($base: 64, $mediatype: \"image/jpeg\")"); // base 64 binary string with mediatype
// conversions
empty.toBoolean(); // returns false
r32.toBoolean(); // returns true
d27159.toLiteral(); // returns "'D8BH'"
h6A17.toLiteral(bali.base2); // returns "'0110101000010111'"
jpeg.toLiteral(); // returns '
// V3HT7ZYDX282VK3LYHFYXJDA9HR9P05550TDP9X47NF72BA2Y5C3H0B9DGLG
// VDVT8GP3S5N25NN4T86H5WMSJMMAX0RXV2LZJ3M9TVM9ADXJG5A6VNGBAZX7
// G9QPJLR1Q5W6WC1QQFKZ3STF82DZ2PCXJ9B40TN9D9TR5898X829ZKWHTWQQ
// 6ZSRY9437Y4NQ5NZJXJAYFJHHSC8W2BFSPPFDFM5P2XA70ZYS06R17A7L8VH
// 8W3201X5NVAGW6J5XQG5HC2JMG4PS1X05BV78YAWG8VRBK7N0K2NMXCCFBWZ
// AZ9D0DT4QKP8BR6MR14CMS7Q55BP04354RTQWK7T1XPYDCW42H1MSBL6Q55G
// Q3XLMR3LBBTCNDX9D5LL6B1PLCR1ALD2Q51S1MXW6T1D03RZR8
//' in the default base 32
r32.toBase2(); // returns the random binary string in base 2
r32.toBase16(); // returns the random binary string in base 16
r32.toBase32(); // returns the random binary string in base 32
r32.toBase64(); // returns the random binary string in base 64
// comparisons
d27159.isEqualTo(h6A17); // returns true
empty.isEmpty(); // returns true
empty.comparedTo(r32); // return -1
r32.getSize(); // return 40 (bytes)
// logical operations
bali.Binary.not(d27159).toLiteral(bali.base2); // returns "'1001010111101000'"
bali.Binary.and(d27159, d50350).toLiteral(bali.base2); // returns "'0100000000000110'"
bali.Binary.sans(d27159, d50350).toLiteral(bali.base2); // returns "'0010101000010001'"
bali.Binary.or(d27159, d50350).toLiteral(bali.base2); // returns "'1110111010111111'"
bali.Binary.xor(d27159, d50350).toLiteral(bali.base2); // returns "'1010111010111001'"
// chaining operations
bali.Binary.concatenation(d27159, d50350).toLiteral(bali.base2); // returns "'01101010000101111100010010101110'"
// iteration
const iterator = r32.getIterator();
while (iterator.hasNext()) {
var byte = iterator.getNext();
// do something with the byte
}// import the framework module
const bali = require('bali-component-framework');
// constructors
const zero = new bali.Number(-0); // -0 = 0 (on the complex Riemann Sphere)
const integer = new bali.Number(42);
const infinity = new bali.Number(-Infinity); // -infinity = infinity (on the complex Riemann Sphere)
const indefinite = new bali.Number(0/0); // not even on the sphere!
const real = new bali.Number(1.23E-45);
const imaginary = bali.Number.fromLiteral('137i');
const rectangular1 = new bali.Number(3, 4); // real and imaginary parts
const rectangular2 = bali.Number.fromLiteral('(3, -4i)');
const polar1 = new bali.Number(1, new bali.Angle(bali.precision.PI/3)); // magnitude and phase
const polar2 = bali.Number.fromLiteral('(-1 e^~1.0471975511965976 i)');
// accessors
infinity.getReal(); // returns Infinity
indefinite.getImaginary(); // returns NaN
imaginary.getReal(); // returns 0
imaginary.getMagnitude(); // returns 137
rectangular1.getImaginary(); // returns 4
rectangular1.getMagnitude(); // returns sqrt(3^2 + 4^2) = 5
real.getPhase(); // returns ~0
polar1.getPhase(); // returns ~PI/3 = ~1.047197551196598
// conversions
zero.toNumber(); // returns 0
infinity.toLiteral(); // returns 'infinity'
infinity.toNumber(); // returns Infinity
indefinite.toLiteral(); // returns 'undefined'
imaginary.toNumber(); // returns 137 (the magnitude)
rectangular1.toLiteral(); // returns '(3, 4i)'
rectangular2.toPolar(); // returns '(5 e^~-0.9272952180016122i)'
polar1.toLiteral(); // returns '(0.5, 0.8660254037844386i)'
polar2.toRectangular(); // returns '(-0.5, -0.8660254037844383i)'
// comparisons
zero.isZero(); // returns true
indefinite.isUndefined(); // returns true
infinity.isUndefined(); // returns false
infinity.isInfinite(); // returns true
rectangular1.comparedTo(rectangular2); // returns 1
polar1.comparedTo(polar2); // returns 1
zero.comparedTo(rectangular2); // return -1
polar1.comparedTo(infinity); // return -1
// numerical operations
bali.Number.inverse(rectangular1).toRectangular(); // returns '(-3, -4i)'
bali.Number.reciprocal(polar1).toPolar(); // returns '(1 e^~-1.047197551196598i)'
bali.Number.conjugate(rectangular2).isEqualTo(rectangular1); // returns true
bali.Number.sum(rectangular1, rectangular2).toLiteral(); // returns '3'
bali.Number.difference(rectangular1, rectangular2).toLiteral(); // returns '(3, 8i)'
bali.Number.scaled(polar1, 3).toPolar(); // returns '(3 e^~1i)'
bali.Number.product(polar1, polar2).toLiteral(); // returns '(0.5, -0.8660254037844394i)'
bali.Number.quotient(polar1, polar1).toLiteral(); // returns '1'
const exp = bali.Number.exponential(rectangular1, polar1);
exp.toRectangular(); // returns '(-0.28322440499, 0.96078349272i)'
const log = bali.Number.logarithm(rectangular1, exp);
log.toPolar(); // returns '(1 e^~1.047197551204799i)'
polar1.isEqualTo(log); // returns true// import the framework module
const bali = require('bali-component-framework');
// constructors
const p1 = bali.Probability.fromLiteral('true');
const p2 = new bali.Probability(1);
const p3 = new bali.Probability(0.75);
const p4 = bali.Probability.fromLiteral('false');
const p5 = bali.Probability.fromLiteral('.25'); // no leading zero for probabilities
const p6 = bali.Probability.not(p3); // p6 = 1 - 0.75 = 0.25
// conversions
p1.toNumber(); // returns 1
p2.toLiteral(); // returns 'true'
p3.toBoolean(); // returns true since 0.75 >= 0.5
p4.toNumber(); // returns 0
p5.toBoolean(); // returns false since 0.25 < 0.5
p6.toLiteral(); // returns '.25' because probabilities don't have a leading zero
// comparisons
p1.isEqualTo(p2); // returns true because true is the same as the probability one
p3.comparedTo(p2); // returns -1 because 0.75 < 1 (true)
p4.comparedTo(p1); // returns -1 because 0 (false) < 1 (true)
p5.isEqualTo(p6); // returns true
// weighted coin tosses
bali.Probability.coinToss(p2); // returns true 100% of the time
bali.Probability.coinToss(p3); // returns true 75% of the time
bali.Probability.coinToss(p4); // returns false 100% of the time
// logical operations
bali.Probability.not(p1).isEqualTo(p4); // returns true since not true = false
bali.Probability.and(p3, p6).toNumber(); // returns 0.75 * 0.25 = 0.19
bali.Probability.sans(p3, p6).toNumber(); // returns 0.75 * (1 - 0.25) = 0.56
bali.Probability.or(p3, p6).toNumber(); // returns 0.75 + 0.25 - 0.75 * 0.25 = 0.81
bali.Probability.xor(p3, p6).toNumber(); // returns 0.75 + 0.25 - 2*(0.75 * 0.25) = 0.62