Z3 prima notes

Notes Only - Not all commands may work...


a=[1 2; 3]
	a=[[1,2],[3]]
	a=[1 2; 3 4]
	a=[1 20; 2 3]
	a=[[1, 20],[2, 3]]
	a=[[1, 20],[2, [3 4]]];
	a=[[1, 20],[2, [3; 4]]];
	a=[[1, 20],[2, [3; 4;]]]; // worked with after 4 nothing was taken. Is that something to change later? with a null?
	a=[1 20; 2;[3,4]; 3] 
	a=[1, (a+b); 2;[3,4]; 3]
	a=[1*(a+b); 2;[3,4]; 3]
	a=[1*(a+b); 2;[3,4+34]; 3];
	
	a=[1 3 2; 3 3 4;4 4 4] // check
	

	|a|;
	|10|;
	a=|44|
	b=34
	a=[3,4,2..20]
	a={"car":a}
	a=|4x3x3|
	|4||(3*x)^2||4|
	
	a=|3||*||4|
	a=|5x5| 
	a=|5| 		
	|10x3|
	a=a|x+3|b;
	a=|5||+||5|
	a=|5||\||5| 	//for INTDIV
	a=|5||/\||5| 	//for DIVPARTS
	a=|5||%||5| 	//for MATRIXMOD
	
	a=|3||CHIDIST||4| // should we make this CHIDIST with MOP? Could decide later for MATRIXOPS
	1..100@"x^2"
	CHIDIST(1..100,2..3) .graph(1,0)
	[1..2,1..4,1..20]@"x^3+y^2+z^3"
	FOR 20..30 "det(MAGICSQUARE(x))";
	a=FOR 1..100 SIN;
	a=		FOR 20..30 "det(MAGICSQUARE(x))";
	var a=FOR 20..30 "det(MAGICSQUARE(x))";
	var a=FOR 20..30 "det(MAGICSQUARE(x))",b=FOR 1..100 COS;
	radpiby3
	a=SIN(radpiby3)
	1..100.fillwith(1..10)
	(1..100).fillwith(1..10)
	(1..100..10).fillwith(1..10)
	1..100.fillwith(10..100).$(CIRCLE)
	1..100 .fillwith(10..100).$(CIRCLE) 	
	1..100..130.fillwith(10..100).$(CIRCLE)
	SIN@1..100@COS
	SIN@1..100
	1..100@COS
	1..100..10@COS
	1..100..10.fillwith(10..100).$(CIRCLE)
	1..100.23..1023.1 .fillwith(10..1020).$(CIRCLE)  
	1..100..10.fillwith(1..10)
	FOR 20..30 "det(MAGICSQUARE(x))";		
	
	FOR 20..30 "det(MAGICSQUARE(x))";	
	FOR 20..30 "det(MAGICSQUARE(x))";	
	1...100.0343..103.fillwith(1..10)
	
	a=[1  (a+b); 2;[3,4]; 3]
	function z()
	{
		if(a<3)
		{
			return(false);
		}
	}
	function ()
	{
		if(a<3)
		{
			return(false)
		}
	}
	A=(|3x4|@4.3)@SIN
	|4|.$i([SUM,SIN,COS]);
	|4|.$i(SUM,SIN,COS)
	[["cats1","dogs1"],"birds"]<<<[[2,[COS]],[SIN]]
	[["cats1","dogs1"],"birds"]<<<<[[2,[COS]],[SIN]]
	[["cats1","dogs1"],"birds"]>>>>[[2,[COS]],[SIN]]
	
	[["cats1","dogs1"],"birds"]>>>>[[2,[COS]],[SIN]]
	birds // check

	[#a-z,#A-Z,1..10,4..500]
	a=#a-z
	a=#1/1/16
	var a=#;
	b=#;
	c=#;
	d=#;
	PMT(#1/1/2011,#2/2012) // worked
	var a=#a-x;
	b=#1/1/2011;
	a = a < 34 ? 3
	#TABLE3!A3:E6 
	a=#TABLE3!A3:E6 
	a=#A3:E6 		 
	a=SIN(#D8:E11,#H11:K12)	
	#TABLE3!A3:E6 
	a=#TABLE3!A3:E6 
	a=#A3:E6 
	#D8:E11 
	#TABLE3!A3:E6 
	[1,2,undefined,#].$(SIN)
	a=[#1/1/2011,#2/2/2015] 
	[1,2,undefined].$(SIN) 
	[1,2,undefined,#].$(SIN)
	v:=u+a*t
	E=m*c^2;
	a=5!;
	a=(a+x)!;
	a=(a+x)*!34;
	a=(5!)!
	a=5!! will not work.
	a=34!P!3
	a=34!C!3
	a=34!P!3!C!3
	
	/*Enter Code Here in Z3/Javascript...*/
	a1=#a-g
	a1.$("x+x+x")
	
	var a=2;
	v:=u+a*t;
	var b=3;
	
	var a=2;
	var v:=u+a*t;
	var b=3;
	
	var a=2;
	var v:=u+a*t;
	var b=3;
	
	var a=2;
	var v:=u+a*t,d=34;
	var b=3;

	var a=#a-x,d=#1/1/2011;
	
	# means undefined by itself.
	ad := a+b
	1..3**3.$d (SIN) 
	(1..3**3).$d (SIN) 
	
	PRODUCT(n..1..-3)
	a=#,b=#,c=#
	FACTTRIPLE:=PRODUCT(n..1..-3)
	FACTTRIPLE:=PRODUCT(n..1..-3)  
	1..10|x<4|

	1..10|x?x<4|
	1..10|x?x<4:u|
	1..10|x?x<4:u|1..10
	1..10|x?u+x<4:u|1..10
	
	
	|4||x?x<4:false||34| ;
	|4||x?x<4||34|;
	|4||x?x<4||34| ;
	|4||x?x<4:34+y+z||34|;
	|4||x?x<4|;
	|4||x<4|;
	|1||x<4||x>10| 	
	
	1..10|x<4&&y>9|2..20
	a=3!
	a=100..|x+y|3	
	..100
	10..

	1..10|x<4|
	1..10|x<4|34 
	1..10|x^3&&x^3<3000?x|w

	0..10@"SIN(x^2,1..10)" .graph() // what does this mean?
	0..10@"SIN(x^2)"  .graph() // works.
	0..10@("SIN(x^2,1..10)" .graph())
	0..10@"SIN(x^2,1..23..10)".graph(30).sin()
	0..10@"SIN(x^2,1..23..10)".graph(30).sin()
	1..1000..100@["x^2",COS] .graph()  

	0..10@"SIN(x^2,1..10)" .graph()
	0..10@("SIN(x^2,1..10)" .graph())
	0..10@"SIN(x^2,1..23..10)".graph(30).sin()
	0..10@"SIN(x^2,1..23..10)".graph(30).sin()
	
	0..10@"SIN(x^2,1..10)" .graph()
	SIN(x^2,1..10)
		
	1..3**3.$d (SIN) 
	(1..3**3).$d (SIN) 
	
	(1..1000..100@["x^2",COS] .$(SIN)) @SIN	
	0..10@"SIN(x^2)" .graph()
	0..10@"SIN(x^2)".graph()
	1..10|x<4|34
	1..10|(x?x<4)|
	var a=FOR 20..30 "det(MAGICSQUARE(x))", b=FOR 1..100 COS;
	
	a=[1*(a+b); 2;[3,4+34]; 3] 
		|a|
			|10|
			
	a=[1*(a+b); 2;[3,4+34]; 3]; 		|a|;			|10|			
	PMT(100000,44%,40)
	a=FOR(PMT, 100000,41% ,1..12)
	
	pmt12:=PMT(x,y,12);
	pmt12(1000,26%)
		vary...
	
	Θ=3+x;
	vs 
	Θ:=3+x;
	Θ(34)
	അത:=34+അതx;
	അത(4)
	
	/*Enter Code Here in Z3/Javascript...*/
	var a=10;
	for(var b=1;b<a;b++)
	{
	  console.log(b)
	}  
	
	/*Enter Code Here in Z3/Javascript...*/
	function test()
	{
	  var a=25;
	  c=[]
	  for(var b=1;b<a;b++)
	  {
		c.push(b)
	  }  
	  return(c);
	}
	test()
	
	test:=x!;
	test(3);

	// NEW
	
	1..67..4@[SIN,COS] .graphin()
	1..(160%19)@SIN
	
	a=radpiby3;
	c=a@SIN;
	c.graphin()
	//check 
	
	
	deg222by3
	rad2piby3
	a=radpiby3 |*| 2
	rad2piby3
	radpiby3 |*| 2 
	a=radpiby3 |*| 3
	
	
	//http://www.tribology-abc.com/calculators/default.htm
	//drag-drop calculate.
	
	LOAD("loans")
	LOAN(10000,12%,12)
	LOAN(10000,12%3, 0) 
	
	LOAD("loans")
	LOAN(10000,12%,12).PAYMENTS()
	
	LOAD("countries")
	COUNTRY(3..23)
	
	LOAD("elements")
	ELEMENT(3..23)
	
	
	
	THINK "Jaipur"
	
	|10|.fillwith(10..1000) |*| 20
	|4|.fillwith(34..200..3).$("2*x^3") 
	
	a=radpiby4 |*| 28
	a=|5||++||6|
	
	CAL(6..11,2012)
	
	["sunny"]<<<[[1..10]]
	SIN(sunny)
	
	morethanthree:=u>3
	1..10@morethanthree
	
	1..10|++|2..20
	
	mary=[SIN,COS,TAN]
	1..10@mary
	["divya"]<<<["SIN(x)+COS(x)+x^2"]
	1..10@divya
	
	["sunny","sneha"]<<<[[1..100],[500..1000]]
	sunny
	sneha
	
	c=1..35@SIN .graphin()
	d=1..100;
	
	[49,31,#].$(z^2)
	vs.
	[49,31,#].$("z^2")
	
	a=#TABLE1!B1:B1*46
	a=#TABLE1!B1*46 // has issues.
	a=#TABLE1!B1:B1*462
	a=#TABLE1!B1*462
	a=(#1/1/2012-2/1/2012).length
	|4|.fillwith(34..200..3).$("2*x^3") 
		
	a=2..9|*|TRANSPOSE(2..9)
	
	(2..3)~ for transpose.
	a=2..9|*|(2..9)~; //for transpose.
	((2..3)~)*34
	(2..3)*~34
	//~ for transpose.
	
	a=|3|
	a~;
	a=(#TABLE1!B1)~*46 
	
	/* Showing intermediate output */
	a=1..100;
	OUTPUT(a);
	a=1..25;
	OUTPUT(a);
	b=SUM(a);
	[a,b]
	
	Obi:=z^3;
	d=FOR Obi 1..431;
	SUM(d)
	
	c8:=u+a*t
	c8
	
	SET(#TABLE1!B2:D5,1100);
		// sets into calci such values
	SET(#TABLE1!B2:D5,1..100);
	
	1..1100.chunks(3) did not parse.
	SET(#TABLE1!B2:D5,54..100.chunks(2)); 
	SET(#TABLE1!B2:D5,54..100.chunks(2)~);
	
	1..100.fillwith(1..10)
	
	1..1100.chunks(3)
	
	2Space!zcontrol2
	
	FOR "SUM(1..x)" 1...1000000000...100
	
	b=|4|
    b.fillwith(1..123);
	SIN(1..34)
	a=1..20;
	a.fillwith(2..3);

	d=13;
	SUM(d..10..-1)
	
	b=1..100;
	function Jay(x)
	{
		return(x+34)
	}
	1..100@Jay
	
	a:=π*r^2; 
	
	a=|3|;
	α:=π*r^2;
	α(39); 
	
	Σ(1..100);
	
	r=1..100@"π*r^2"; 
	
	θ=1..5;
	SIN(θ);
	
	ctrl+g type greek name or unicode code and select and press ctrl+g to get the conversion into code.
	ctrl+u for uppercase greek etc.
	ctrl+space for hints.
	
	sigma select ctrl+u gets Σ and then Σ(1..100).

	മോോ=1..100;
	ഐങ=2|*|മോോ
	
	a="🍏🍎";
	function x(n){return(REPEATCHAR(a,n))}
	1..100@x
	
	success="🍤";
	1..100.map(()=>success);
	
	ഒട്ടക൦=34;
	ഒട്ടക൦=44+ഒട്ടക൦;

	Yurttas:=SIN(c..30)
	Yurttas(28)

	(1..1000..100@["x^2",COS] .$(SIN))@SIN
	
	fx:=SERIESSTR("x*3*_x+",1..x).join("")
	1..10@fx
	
	a=|3|;
    (a).rotate(45)
	
	function das(x)
	{
		var adi=3;
		return(adi+x)
	}
	das(4);
	
	function fact(x)
	{
		return(x<1?1:fact(x-1)*x)
	}
	fact(19)
	
	তণ=0;
	FOR 1..(তণ+4) SIN;
	

	v:=u+a*t;
	ARRAYFY(v);
	v(1..10,2..3,10..12);

	//think of why this is not accurate.
	// the matrix comes in incorrectly. 
	// Seems like it needs v:=u+a[0][0]*t;
	
	v:=u[0]+a*t;
	ARRAYFY(v,[0]);
	v(1..10,2..3,10..12);

	
	BOTTOMN([[1,2],[3,4],[4,5]],1..2)
	TOPN([[1,2],[3,4],[4,5]],1..2)
	
	VLOOKUP(5, [1..10]~, 1,TRUE) 
		// note ! is required to make it into a 2-D array. Any other tricks we could suggest?
	VLOOKUP(21..26,|5|.fillwith(11..50), 1..5,FALSE) 
	
	(1..10~)
	(1..10)~ // this makes a 2D array to be more accurate.
	(1..10)
	
	VLOOKUP(21..26,|5|.fillwith(11..50), 1..5,FALSE) 
	
	function x1(x){return(x+34)};x1(304)
	
	v:=u+a*t;
	FOR v 1..100 23 44
	
	05162016
	---------
	
	√(3+34)
	∛(27.01)
	√√64
	ROOTNTH(1..10,4) 
		// root is first parameter
	NTHROOT(1..10,4)
		// root is second parameter
	
	NTHROOT(1..100,2)
	NTHROOT(1..100,4)
	ROOTNTH(1..100,2)
	ROOTNTH(1..100,4)
	3√81
	
	todo
		a=|4 2 3|
		
		// had issue with VariableExpression.
		
		// when do we var nowmark=Z3SetBookmark(); // when do we unset this?
		SELECT * FROM A
	
	// assignment to left and right.
	3+4==>a;
	a+3;
	a<==3+4;
	a+3;
	
	
	(
		function (x)
		{
			∴(3+x)
		}
	)(45) 
	// ∴ means therefore, and is a replacement for return statement.
	// ∵ means since, if etc.
	/*
		NOTE: 
			∴ means therefore or return
			∧ means and
			∨ means or
			∩ means intersection
			∪ means union.
	*/ 
	(1..100)∩(1..10 )
	¬34	
	¬true	
	
	a=34;
	¬a
	UNION(1..100,1..10) 

	a=3;
	since(a<4)
	{
		OUTPUT(31);
	} 
	// since|when|because|etc works instead of if.
	
	a=34;
	if(!(a<1))
	{
		a=34;
	}
	
		
	a=⊤; // true tack
	if(a)
	{
		a=34;
	}
	
	a=!⊤; // true tack
	a?4:54

	
	
	∅ //- for null.
	a=∅ ;
	a?224:524

	// get this right. a has to be declared outside of do.
	var a=34;
	do
	{
		
		a=2;
	}when(a<3)   
	a;
	
	/*
		case '⌈': // left ceiling
		case '⌉': // right ceiling
		case '⌊': // left floor
		case '⌋': // right floor
		case '≈': // round 
	*/
	
	2⌈3 // ceiling
	2⌋3 // floor
	2.0001⌋0.00001
	2.0001⌋0.01
	2.003≈3
		// round to 3 digits
	2.234≈
		// round to zero digits.
		
	40%6; // mod.	
	
	1..100⋰ // ascending
	1..100⋱ // descending
	(100..1..-2)⋰
	(100..1..-2)⋰
	
	a=(1..100);
	a⋱
	a=(34.5454≈)==(34.53454545≈)
	 
	(1..100)⋱
	//to type in the ascending or descending, type ascending and press ctrl+G.
	//we can type first few letters of the string and press ctrl+g.
	
	(∛729)⌈
	
	a=1;
	do
	{
		a++
	}
	until(a>20); // do while(!condition)
	a; // here this will be 21, since !condition is checked like a do while loop.
	
	a=11;
	b=45;
	because(a<b)
	{
		a++
		OUTPUT(a)
	}
	
	a=11;
	do
	{
		a++
	}
	unless(a==11); 
	a;

	a=⊤;
	b=⊥;
	[[a,b],[a ∧ b,a ∨ b]]

	(2334/344)⌋
	
	a=!∅;
	(a)?4135:645

	a=23÷3.4
	
	function y(x)
	{
		∵(x<345)
		{
			∴(x+3434)
		}
		∵(x>345)
		{
			∴(x-3434)
		}
	}
	y(13);
	
	Ƒ y(x)
	{
		∵(x<345)
		{
			∴(x+3434)
		}
		∵(x>345)
		{
			∴(x-3434)
		}
	}
	y(13);
	
	FORALL(1..100,"z<=100")
	THEREEXISTS(1..100,"x<=0")
	THEREEXISTS(1..100,"x>100")
	THEREEXISTSONE(1..100,"x<=0")
	THEREDOESNOTEXIST(1..100,"x<=0")
	THEREDOESNOTEXIST(1..100,"x<=1")
	
	∑(1..100)
	∏(1..100)
	
	a=1..100;
	∀a("x<810")
	∃a("x<810")
	∄a("x<810")
	
	a=1..100;
	[∀a("x<810"),∃a("x<810"),∄a("x<810")]
	a=1..100;
	[∀a("x<810"),∃a("x<810"),(!∄a("x<0"))]
	
	a=1..100;
	b= ∀a("y*2<200");
	b.result
	
	a=1..100;
	b= ∀a("y*2<=50");
	a.pick(b.result)
	
	//make a pick operator based on a similar array of true false. or non-existant to get the values out.
	//PICK
	
	a=1..100;
	b= ∀a("y*2<50");
	a.pick(b.result)
	
	a=☺; // true
	a=☹; // false 
	
	// to get smileys type :-) or :-( and ctrl+g on this after selection.
	
	// Ƒ is function
	// ∴ is therfore or return
	Ƒ n(a,t) 
	{
		∴(a+t)
	}
	n(2,34)
	
	a=1m;
	b=2cm;
	velocity=3(m/s^2)
	// these give these with units.
	// how about variable names with units? Does it work like that?
	// how to do unit operations?
	
	/*
		if(cond)
		{
			what to do
		}

		when(cond)
		{
			what to do
		} 
		else because
		{
			what to do
		}because(cond) 
	*/
	
	a=1m;
	b=2cm;
	c=a<+>b;    
	// some minor issue in the .add with normalize units.
	//can we convert a variable to appropriate unit with unit notation?
	
	a=1m;
	b=2cm;
	c=a<+>b;  
	c ⚖m // make this work with identifier parsing out units also.
	// what is a better symbol for unit conversion of a variable?
	c ⚖mm;
	[c⚖mm,c ⚖cm] // works
	
	a=1°;
	[SIN(a),SIN(1)]

	a=1°; 
	b=2°;
	c=3㎭;
	e=23℃;

	a=1°; 
	b=2°;
	(a<+>b)<>rad 
	
	ACOS(0.1..1.0..0.1)
	SPEEDOFLIGHT()
	a=1kg;
	a<*>(SPEEDOFLIGHT()<^>2)

	(1m<+>100cm<+>1ly)<*>-1(s-1);
	
	//centrigrade etc.
	a=1℃ ;
	a<>3℉;

	a=14℃; 
	b=2℉;
	[a<>℉,a<>K]  
	// had issues.
	
	a=14℃; 
	b=2℉;
	[a<>℉,a<>℃,a<>°]; //° is angle, not temperature.

	
	a=35℃;
	b=a<^>2
	b
	
	a=77℃;
	a<> ℉
	
	a=0℃;
	a<> ℉
	
	a=100℃;
	a<> ℉
	
	a=1-ⅈ3.4
	
	a=1-ⅈ3.4;
	
	b=+ⅈ3; // + is required to make it prevent from being a simple identifier.
	
	b=1+ⅈ3;
	a=2+ⅈ3;
	IMSUM(a,b);
	
	b=1+ⅈ3;
	a=2+ⅈ3;
	a<+>b; // make this work. 05292016.
	//made MakeVectorToMatrix to handle complex numbers as one object. Other items like this? like vectors?
	
	0degF<>degK
	
	a=1m;
	a<>cm;
	
	a=1m;
	a<>ym;

	a=1mi;
	a<>km;
	
	a=1..100
	b=a<>(mi);
	b<>km; // titles still have chinese in production.

	a=(1..100)<>℃
	b=a<>℉
	
	E:=(m<>kg)*(SPEEDOFLIGHT()<^>2);
	E(2kg)
	
	a=1mi;
	b=10km;
	[a,b,(a<+>b)<>mi]
	
	10mi<>km
	
	Pi seems to be obfuscated.
	
	//Use degC, degF and degK for temperature units.
	
	SIN(90<>deg)
	
	(rad2piby10)<>rad<>deg
	
	((rad2piby10)<>rad<>deg)@SIN .graphin() 
		//did not work in safari.
	(1..10)<>kg
	
	b=(100$<+>3020¢);
	b<>$;

	SETCONVERSION("USD","INR",1.1)
	34USD<>INR
		
	SETCONVERSION(1<>euro,1<>dollar,1.1)
	
	SETCONVERSION(1$,1€,0.9);
	PRINTCONVERSION();
	345$<>€
	
	1$<>1₹ // without conversion will fail.
	
	(1..100)<>℃<>℉
	
	SETCONVERSION(1<>€,1<>$,1.1);
	(1..100)<>€<>$
	
	SETCONVERSION(1<>€,1<>$,1.10);
	(1..1000..10)<>€<>$
	
	SETCONVERSION(1<>€,1<>$,1.10);
	(0..1000..20)<>€<>$
	
	UNITIFY([1m,2m,3cm])
	
	SUM(UNITIFY([1m,2m,3mm]))
	
	(100$<+>300¢<+>30¢)<>$
	PMT(4%,12,1000$,120000¢,0)
	
	PMT(4%,12,1000$,1200.00¢,0) 
	PMT(4%,12,1000$,120000¢,0) 
	
	1<>gal<>l
	1<>l<>oz
	
	(1..100)<>l<>ul
	1Pa<>atm
	
	E:=(m<>kg)<*>(SPEEDOFLIGHT()<^>2);
	b=E(2g);
	ConvertToUnitOfNature(b,"energy")

	1m<>>1cm;
	
	[1m,2m]<>>[1cm,200cm];
	
	[1m,2m]<>=>[1cm,200cm];
	
	[1m,2m]<<>[1cm,200cm];
	
	[1m,2m]<<>[1cm,200cm];
	
	[1m,2m]<==>[1cm,200cm];
	
	[1m,2m]<!=>[1cm,200cm];
	
	[1m,2m]<<=>[1cm,199.99cm];
	
	[1m,2m]<<=>[1cm,200.01cm];
	
	((1..10)<>m)<>>3m;
	
	((0.1..10)<>m)<>>30cm
	
	
	CONSTANT("G")
	CONSTANT("G")<*>1kg<*>110kg</>(6000m<^>2) // did not work.
	
	(CONSTANT("G")<*>1kg<*>110kg)</>((6000m)<^>2) // how to bracket the units to be inside and ignore < etc?
	// ## can be used to name variables with spaces in them.
	// the actual variable is named by removing the spaces.
	// otherwise it goes into code as it is.
	##weight of zone=3m; 
	++(##weight of zone);
	
	##weight of zone=3m; 
	a=3.4mm<+>(##weight of zone);
	
	h:=%planck*ν;
	h(1.0e100);

	//%G is gravitational constant
	GF:=%G*m1*m2/r^2;
	GF(1,2,300)
	
	v:=u+%g*t; // this uses %g as default g value 
	v(1,2)
	
	%planck
	%boltzmann;
	%planck length;
	
	// PRINTCONVERSIONS()
	// CONSTANTS()
	// CONVERT()
	SUPPORTEDUNITS()
	
	A¹=34;   
	A=[23,4,5,5];   
	/* no array indexing on subscript yet. Will decide on that later. */
	A¹=[23,4,5,5]   
	A¹[2]
	
	a=%gravit;
	b=30<*>a
	
	a=%gravit;
	b=(1..10)<*>a

	E:=m<>kg<*>%c<^>2;
	E(1000kg)
	E(1000kg<>lbm) // - will gave same result as 1000kg
	E(1000lbm) 
	//lbm is used for units of lb mass.
	
	// %G<*>1kg<*>110kg(6000m<^>2)
	// %G<*>1kg<*>110kg((6000m)<^>2)
		// -did not work. Said 7.34149141e-9Nm3UNITPOWERUNITSOF
	%G<*>1kg<*>110kg<*>((6000m)<^>2)
	
	%G<*>1kg<*>110kg</>((6000m)<^>2)


	// make this work.
	1..100 @> x.txt; // send output to
	a <@ x.txt; // read input from
	a;
	
	1.3J<>GeV
	1.3J<>eV
	
	1J<>l.atm; // 	0.0098692latm
	1J<>(l.atm-1) // this should fail. and will keep original units. maybe safer.
	1m2<>in2
	1m²<>in²
	
	10m2<>are
	1m2<>are

	100m2<>acre
	1(m2/s)<>(cm2/hr)
	
	E:=m<>kg<*>%c<^>2;
	b=E(1000kg)<>J
    c=b<>eV;
	[b,c]
		
	1..100.$("[SIN(x),COS(x),TAN(x)]")
	1..100.$([SIN,COS,TAN]) worked.
	1..100.$("[x,x^2,x^3,x^4,x^3+x^4,SIN(x)]") works
	1..100.$("[SIN(x),COS(x),TAN(x)]")
	1..100.$([SIN,COS,TAN])
	x=SERIESOF("1/x",9,10) //this is to from in parameter sequence.
	x=SERIESOF("1/x",19,10)
	SERIESOF("1/x",10,5)
	x=SERIESOF "1/LOG(x,2)" 100 1
	x=SERIESOF "1/log2x" 100 91
	//removed:  1..10.$_([+,-]) 
	1..10.$_([SUM,MINUS])
	//removed:         1..10.$_|+|
	EXPOF(5)
	[SIN,COS]@[1..100]
	1..10.$_("+")
	1..10.$_("+")
	1..10@["+"]
	1..10@"+"	
	
	(1..100)<>m<+>10cm	
	
	MAGICSQUARE(3).$$(SUM)
	MAGICSQUARE(3).$$$(SUM)
	MAGICSQUARE(3).$_(SUM)
	
	a=1m<>mm<+>400km
	1m<>eor // should give nothing as there is no such conversion.
	(((1..100)<>m)<^>2)<>are
	
	(1..1000)<>$
	(((1..100)<>m)<^>2)<>km2 // why chinese headers here?
	
	(1..100)m<>cm
	
	F=%G<*>100kg<*>10g</>((100km)<^>2);
	
	1.3J<>GeV //check this
	
	velocity=3<>(m/sec);
	time=1hr;
	velocity<*>time;
	
	1(g.m)<>(mg.cm)
	
	a=LAZYRANGE(1,100)
	a(1..100) // generate numbers in the range at that interval, without having to generate the array ahead of time. Useful in things like INTEGRALS etc.
	a()
	a=LAZYOBJECT(1,100,1000) // can even take 
	a(0.1);
	a.islazyrange()
	
	
	1(kg.m2s-2)<>(N.m)	
	1(kg.m2s-2)<>J
	1(kg.m2s-2)<>(N) // also should work as we want to get rid of the /s here in this case.
	1(kg.m2s-2)<>(N.m2) // should fail.
	1(kg.m2s-2)<>(J/s) // should fail.
	1(kg.m2s-3)<>(J/s)
	1(kg.m2.s)<>(J/s)  // should this fail? it works now.
	
	12(g.m-1/s)<>(g.cm) // should fail.
	12(g.m)<>(g.mm)    // should not fail.
	12(g.m)<>(g.cm)   // should not fail.
	
	12(g.m)<>(g.s) // should fail. original should be returned.
	12(g.m)<>(g.mm)
	12(g.m)<>(g.s)
	12(g.m-1)<>(g.mm-1)
	12(g.m-1/s)<>(g.cm-1) // converts, but this is ok, since /s on left sometimes we want to get rid off for some reason for using it on another calculation. Say N/s but you only want to use the N on it.
	1(kg.m2/s2)<>e // how to make this conversion?
	
	1(kg.m2/s2)<>J<>e
	
	1.3(kg.m2/s2)<>Jo // would fail and original will be kept.
	
	(((1..100)<>m)<^>2)<>are
	(1..100)<>are
	[1cm2,2m2]<>are
	%pi*34;
	%e;
	%avo;
	
	q=1(mol/s);
	heat=%avo<*>q;
	
	1Pa<>atm
	1atm<>psi
	1atm<>hPa
	
	a=1<>(kg/m.s-2)<>Pa<>torr
	1J<>BTU
	1ly<>m
	10ly<>m<>km
	
	1atm<>inHg<>mmHg
	
	1atm<+>1bar
	(1atm<+>1bar)<>atm
	1km<>m<>lightyear
	
	1lightyear<>km
	
	1lightyear<>pc
	
	1m<>ly
	
	1km<>ly //seemed off. this is possibly correct.
	(1km<+>1ly)<>km
	
	1Å<>km
	
	1Å<>m
	
	(1..100)<>AU<>m
	
	1degree<>arcminute
	
	1Tsec<>sec
	
	1(m/s)<>(km/hr)
	1(km/s)<>(km/hr)
	
	1(cal/mn)<>(J/sec) // d
	
	1(kg/m3)<>(slug.ft-3)
	
	2(rad/sec)<>rpm // did not convert. not sure why.
	
	(1..100)<>USD<>EUR
	
	SUPPORTEDUNITS()
	
	1nibble<>bit
	102400000000bit<>MB
	1kB<>MB // seems wrong.
	1kB<>Mb 
	1(kb)<>(bit)
	Pi<>(rad/sec)<>rpm
	1(rad/sec)<>rpm
	1(rad/mn)<>rpm
	(1(rad/mn)<>rpm)*2*Pi // should give 1.
	1(rotation/mn)<>rpm
	1(cycle/mn)<>(rad/mn)
	
	1(cycle/mn)<>rpm
	
	60rad<>deg
	60rad<>deg<>rotation
	
	1MB<>kB
	1B<>kB
	1MB<>B
	1kB<>B
	
	a=1(kg/m/s-2/t3)
	a=1(kg/m/s-2/t3)
	a=1(kg/m/s-2/t3)
	a=1(kg/m/s-2/t3)
	a=1<>(kg/m.s-2) // this worked though.

	1(kg/m3)<>(slug/ft^3) // will not work due to ^.
	1(kg/m3)<>(slug/ft3) //works
	1(kg/m3)<>(slug.ft-3) //works
	
	1(s-1)<>Hz
	1(mn-1)<>Hz

	velocity=3<>(m/s);
	time=1hr;
	velocity<*>time;
	
	(((1..100)<>m)<^>2)<>acre
	
	((1..100)<>m)<^>2
	
	// ⏱(1000,ZC()) todo.
	
	1m<>eor // this should say 1m as result.
	UNITSFAILTONULL=true
	1m<>eor this should give null as result. 
	UNITSFAILTONULL=false
	1m<>eor // this should say 1m as result.
	
	// 6/15/2016.
	
	
	(1km</>3)≈3 // this is how we round things.
	a=1m;
	a^3;
	1m<*>3m<*>34m
	
	rad2piby10@SIN .graph()
	
	z=LAZYOBJECT(1,100,10)
	z(1);
	z(100);
	
	z=LAZYOBJECT(1,100,10)
	z("length")
	
	(1..100)∫SIN
	(0..10)∫"z^7"
	(0..100..20)∫("x")
	[(0..100..20)∫("x"),(0..100..20)]
	
	(1..100..23)∫(square:=x^2)
	
	LAZYOBJECT("x^2")(6)
	LAZYOBJECT("x^2")(34)
	
	x=34;
	(x<5)::x++; // similar to if statement.
	x;
	
	x=34;
	(x<5)::{x++};
	(x>5)::{x--};
	x;
	
	// else and else if with ,
	x=34;
	(x<5)::	{x++},
	(x>5)::	{x--},
        	{x=x*2};
	x; 

	x=34;
	(x<5)::	
		{
			x++
		},
	(x>5)::	
		{
			x--
		},
        {
			x=x*2
		};
	x; 

	// This did not work. Check.
	DoubleIfEven:=
		(x%2==0)::	
			{
				2*x
			},
		(x>5)::	
			{
				x;
			};
	

	Ƒ DoubleIfEven(x)
    {
		(x%2==0)::	
			{
				∴(2*x)
			},
		(x>5)::	
			{
				∴(x);
			},
		//otherwise // should we eat this term if there?
			{
				x=x*2
			};
    }
	DoubleIfEven(24)
	
	Ƒ DoubleIfEven(x)
    {
		(x%2==0)::	
			{
				∴(2*x)
			},
		!(x>5)::	
			{
				∴(x);
			},
		//otherwise // should we eat this term if there?
			{
				x=x*2
				};
    }
	DoubleIfEven(24)
	
	// !:
	// can be used as
		// (x>5):!:	
			
	
	// check this did not work.
	Ƒ IsOddOrEven(x)
    {
		(x%2==0)::
			∴(true), // did not work. check.
			∴(false)
    }
	IsOddOrEven(24)
	
	// this worked.
	Ƒ IsOddOrEven(x)
    {
		(x%2==0)::
        {∴(true)},
                {∴(false)};
    }
	IsOddOrEven(23)
	
	// check the structure here.
	// Ƒ IsOddOrEven(x)
    // {
		// ∴((x%2==0)::(true),false});
    // }
	// IsOddOrEven(23)
	
	
	SURFACEGRAPH("SIN(x*y)")
	SURFACEGRAPH("x^2-y^3")
	SURFACEGRAPH("x^2+y^2")
	SURFACEGRAPH([MandeliterZ3]) // requires array of functions.
	SURFACEGRAPH("x^2")
	SURFACEGRAPH("1/x+1/y^2")
	SURFACEGRAPH("SIN(x)+LOG(y)")
	
	mb=SURFACEGRAPH("SINC(SQRT((x/Pi)^2+(y/Pi)^2))")
	mb.view.set("range",[[-30, 30], [-0.3,1.0], [-30, 30]]); // y and z had to be switched.

	mb=SURFACEGRAPH([MandeliterZ3]) // requires array of functions.
	mb.view.set("range",[[-3, 3], [-1.0,1.0], [-3, 3]]);
	
	mb=SURFACEGRAPH([Mandeliter]) // requires array of functions.
	mb.view.set("range",[[-3, 3], [-1.0,1.0], [-3, 3]]);
	mb.view.set("range",[[-2, 2], [-1000.0,1000.0], [-2, 2]]);
	
	
	//if width and height are 200 in points,
	  width:  200, // 2000 was too much.
      height: 200,
	mb.view.set("range",[[-2, 2], [-10.0,10.0], [-2, 2]]);
	// then we can start to see the fractal.
	mb=SURFACEGRAPH([Mandeliter]) // requires array of functions.
	mb.view.set("range",[[-2, 2], [-10.0,10.0], [-2, 2]]);
	// for color try: with width 200 etc.
	var c = IntToColor(INT(y)); 
	emit(c[0], c[1], c[2], c[3]);
	
	mv=SURFACEGRAPH("SIN(x)+LOG(y)")
	//Set range to:
	-1,10, -1, 10, -1, 10 
	//Set scale to:
	1,2,1
	
	a=2;
	b=0;
	a:::
	{
		2:: 
			{
				b++;
				break;
			},
		!3:: 
			{
				b=345;
				break;
			}
	}
	b;
	
	
	
	a=2;
	b=0;
	a:::
	{
		2:: 
			{
				b++;
			},
		3:: 
			{
				b=345;
			}
	}
	b;

	
		a=2;
	b=0;

	fruits="mango"
	fruits:::
	{
		"apple":: 
			{
				b++;
                break
			},
		"mango":: 
			{
				b=345;
                break;
			},
		//default:: or empty
			{
				b=345;
                break;
			}

	}
	b;
	
	fruits="mango"
	fruits:::
	{
		"apple":: 
			b++,
		"mango":: 
			b=345;
	}
	b;
	
	// had error.
	fruits="mango";
	fruits:::
	{
		"apple":: 
			b++,
		"mango":: 
			b=345
	}
	b;
	
	//do otherwise, and how to make , be handled with case also.
	//auto insert break.
	
	// this was supposed to work like if statement. did not.
	b=23;
	fruits="mango";
	(fruits=="apple"):: 
			b++,
	(fruits=="mango"):: 
			b=34.5;
	b;
	
	// this worked.
	b=23;
	fruits="mango";
	(fruits=="apple"):: 
			b++;
	(fruits=="mango"):: 
			b=34.5;
	b;
	
	This works:
	b=23;
	fruits="mango";
	(fruits=="apple")::
		{ b++},
	(fruits=="mango")::
		{b=3.5},
	// else:: // or not given.
		{b=45.5};
	b;
	
	// if statements
	b=23;
	fruits="mango1";
	(fruits=="apple")::
		{ b++},
	(fruits=="mango")::
		{b=3.5},
		{b=5.6};
	b;
	
	b=23;
	fruits="mango1";
	(fruits=="apple")::{ b++},
	(fruits=="mango")::{b=3.5},
	{b=5.6};
	b;
	
	//introduces break automatically now.
	b=0;
	fruits="pear";
	fruits:::
	{
		"apple":: 
        	{
                b++
           	},
		"mango":: 
        	{
                b=345
            },
        default::
        	{
                b=45.6;
            }
	}
	b;
	
	// how to make this work?
	b=0;
	fruits="mango";
	fruits:::
	{
	 "apple","tomoto":: 
		{
			 b++
			},
	"mango":: 
		{
			 b=345;
			 ; // this empty statement makes it fall through.
		 },
	 default::
		{
			 b=45.6;
		 }
	}
	b;  

	b=0;
	c=343;
	fruits="mango";
	fruits:::
	{
        "apple","tomato":: 
        	   b++;
        	   c=3.4;
           ,
		"mango":: 
        	   b=34905; 
                
            ,
        default::
        	
                b=45.6;
            
	}
	[b,c];  
	
	switch(a)
	{
		case b:
		case c:
			break;
		default:
			break;
	}
	(a<0)::whatever,
	(a>4)::whateverelse,
		whateverelseleft;
	
	// this worked, but had 3 semicolons at the end.
	a=3;
	(a<0)::"whatever";,
	(a>4)::"whateverelse";,
		"whateverelseleft" 
	
	a=3;
	(a<0)::{"whatever"},
		{
			!(a>4)::
				{"whateverelse"},
				{"whateverelseleft"}
		}  
		
	(a>4)::
			{"whateverelse"},
			{"whateverelseleft"}
			
	function varun(a)
	{
        (a<5)::{return(a+4)},
        (a>10)::{return(a+40)},
		{return(a+4)}
	}
	[varun(4),varun(45)]
	
	function varun(a)
	{
        (a<5)::
        	{return(a+4)},
        (a>10)::
        	{return(a+40)},
			{return(a+4)}
	}
	[varun(4),varun(45)]
	
	1..100.map((x)=>x*x)
	1..100.map(function (x){return(x*x)})
	1..100.$("x*x*x")
	MAGICSQUARE(3).$("x*x*x")
	
	[[[1..10]~]~]~
	
	// picking elements or rows or columns from an array.
	1..100.X(1..40..2); // not .x
	(1..100@SIN).X(1..3)
	 //(this picks every even from 1..40 index position)
	|4|.r(2) // row // should we consider upper case here?
	|4|.c(2) // col
	|4|.c(2,3)
	
	MAGICSQUARE(5).extract(1,3)
	MAGICSQUARE(5).x(1,3)
	(MAGICSQUARE(5)~).x(1,3) // for columns
	
	MAGICSQUARE(5)!
	(1..100)↓
	(1..100)↑

	//todo:
	a=-1;
	⧓(1,a,30)
	a=29;	
	⧓(1,a,30) //between g
	
	a=31;
	⧒(1,a,30) //xlbetween g
	a=30;
	⧒(1,a,30) //xlbetween g
	
	⧒(1,2,30) // xlb g
	⧒(1,1,30)
	
	a=29;
	⋈(1,-1..31,30);
	
	⧓(1,-1..5,4);
	
	[
		⧓(1,1,30),
		⧓(1,0,30),
		⧓(1,10,30),
		⧓(1,31,30),
		⧑(1,29,30),
		⧑(1,30,30),
		⧑(1,1,30),
		⧑(1,30,30),
		⋈(1,1,30),
		⋈(1,3,30)
    ]

	
	(1..100)⍌ 
		//for //flatten.
	|4|⍌ 
	
	(1..100)⦚ //for random.
	(1..100)⦚3 //for random upto 3.
	((1..100)⦚5)≈ // upto 5 but then round them.
	(|3|⦚450)≈
	
	(|4|⦚35)≈
	44545.43434⌋
	44545.43434⌋6 // is this right?
	((|4|⦚3)⌋)
	
	(|4|⦚30)|/|3
	
	a=2;
	a<20::
		{a++;},
	a>20::
		{a=456};
	a;
	
	a=20;
	a:::
	{    2::
		{a++;},
		20::
		{a=456};
	} 
	a;
	
	5*√3
	5√3 // 5th root of 3.
	
	(1..37)√3
	
	3√144 // 3rd root of n.
	√144

	a=4;
	b=144;
	a√b

	a=4;
	b=144;
	a*√b

	a=1..100.make("cartesian-2d");
	(1..100@"z^2").make("cartesian-2d");
	a=(1..100@"z^2").make("cartesian-2d")
		// this looks like 2d array.
		// but we need to do res.push(this[i].makecore(SomeCompositeType)); with 1 or 2 if the number of points are lesser or equal to what is needed.
	
	a=1..100@SIN .make()
		//why did a.$("x['polar']") not work?
	a.polar()
	// why is a.graph() now not working?
	
	rad2piby10@SIN .make("polar-2d") 
	
	//a=rad2piby10;
	//a.make("polar-2d");
		// this makes it by two. How to do without that?
	//a.pair(1,false).print()
	

	a=rad2piby10;
	b=a.pair(1,false).make("polar-2d");
	b.make("cartesian-2d") // this did not work. Check why.
	
	//XYPOINT is a definition, we need to create a new Object out of it to use.,
	// Could consider a core function.
	
	a=3;
	a isnt 3
	
	a=false;
	not a;

	a=34;
	b=43;
	if((a is 34) or (b is 435))
	{
		34;
	}
	else
	{
		54
	}    
	
	a=34;
	b=435;
	((a is 34) and (b is 435))::
		{
			34;
		}
		,
		{
			54
		}    
	
	
	a=34;
	b=43;
	if((a is 34) and (b is 435))
	{
		34;
	}
	else
	{
		54
	}    
	
	a="papaya";
	b="apple"
	a is b
	
	a="papaya";
	b="apple"
	a isnt b
	
	a=341;
	a isnt 34
	
	a=341;
	a is not 34 // this is different from isnt (as this is ==!)
	
	1 to 100 by 2
	1 to 100 to 2
	1 .. 100 by 20
	
	a=1 to 100 by 12;
	b=10;
	∵(a and (b is 10))
	{
		c=3434
	}
	c

	∵(b is 10)
	{
		c=45;
	}
	
	b?=3 // existential operator. replaces with 3 if it does not have a value.
	
	a=APPLYTOKEYS(1..100,COS)
	a=APPLYTOKEYS({a:1,b:2},COS)
	a=APPLYTOKEYS({a:1,b:2},PRINT)
	a={a:2,b:3} .* PRINT // apply function over.
	a={a:2,b:33}.*PRINT
	a=(1..2);
	a.* PRINT
	
	x={a:2,b:33};
	x.*PRINT
	
	x={a:2,b:33};
	x.*(SIN)
	
	
	x={a:2,b:33};
	x.*("x^2")
	
	x={a:2,b:33};
	x.*(["x^2","z^3"])
	
	(1..100) .* ["x^2","x^4"]
	
	MAGICSQUARE(5) .* ["x^2","x^4"]
	MAGICSQUARE(5) .* "x^2"
	 // did that work?
	
	
	±3;
	
	a=±3;
	SIN(a)
	
	a=±3;
	SIN(a)|+|33
	
	a=±3;
	SIN(a)<+>33
	
	car=3;
	a="this is a ##car## whatever"
	
	car=3;
	a="this is a ##car"
	
	// here arrays are used to mark the sequence of parameters that are assigned.
	qe:=[a,b,c,((-b)<+>±SQRT(b^2-4*a*c))</>(2*a)];
	qe(1,2,-3) // quadratic equation solution.
	// should answer be given as 1, -3. plus minus uses plus first.
	
	√(1..100)
	
	a=3;b=4;
	|a,b,(a+b)|
	
	a=3;b=4;
	|4x3|
	
	|4x3|<<<3..10
	
	
	x=45;y=45;
	|4,3,[x+y]|
	//The last element if an array will be used to fill the elements.
	// Here there should be atleast one element in the array to the left of this.
	// That is to handle creation of functions etc. And for array programming inside array notation.
	x=45;y=45;
	|4,3,1..10|
	
	x=45;y=45;
	|4,3,(x,y)=>SUM(x,y-3)|

	x=45;y=45;
	|4,3,(x,y)=>[x,y]|
	
	x=10;y=10;
	b=|x,y,1..100|

	b=|10,10,1..100|
	b=|10,10,1..100|~
	
	|10,10,(x,y)=>x^2|
	
	a=10;
	|a,a,(x,y)=>((x-a/2)^2+(y-a/2)^2)|
	
	a=100;
	|a,a,(x,y)=>((x-a/2)^2+(y-a/2)^2)| // will be slow. This calculates the function at all these points.

	v:=u+a*t;
	[1,2,3..5]@@v	// note @@ forces combinatorial on the data array.
	
	1..10@SIN
	[1..10]@@SIN // will work
	//1..10@@SIN will not work, since array 1..100 combinatorially will be large array that will not mean what the intent of calling it.
	
	//@@ operator is to force combinatorial behavior without adjustment for single parameter.

	FRACTION("1 1/2").equivalents(2)
	
	FRACTION("1/2").equivalents(1..100)
	FRACTION("1 1/2").equivalents(1..100)
	
	a=(4/5)%%;
	
	a=(4/5)%%;
	a.multiply((2/5)%%)

	MAKEFRACTION(2).toString()
	//gives 3. why????
	
	5%%5<+>4%%5
		/* Results is not showing */
	(5%%5<+>4%%5)%%
	1.4%%3 // should be 1 4/3.
	
	(4%%5)<+>((1%%5)<>m)
	
	((4%%5)<+>((1.3%%5)<>m))%%
	
	((4%%5)<+>((1.3%%5)<>m))%%;
	2.4%%;
	
	((4%%5)<>m)<+>((1.3%%5)<>m)
	
	(4%%5)<+>((1.3%%5)<>m) // this did not keep units. Should we correct it?
	((34%%5)<>m)<+>((1.3%%5)<>m) 
	((3.4%%5)<>m)<+>((1.3%%5)<>m) 
	// note 3.4%%5 is the fraction 3 4/5
	
	[2 2; 3 4; 4 4 4;1..10 4]
	
	dany:=a+3*b;
	ARRAYFY(dany)
	a=dany(1..10,3..20)
	b=SUM(a);
	
	LOAD("loans");
	a=LOAN(100000,12%,12) ;
	a.PAYMENTS()

	1..100 .extract(3..5)
	
	cartoons=["test","another"];
	FOR(0..1,"[i,_cartoons[i]][1]")
	
	cartoons=["test","another"];
	FOR(0..1,(i)=>cartoons[i]);
	
	n=50;
	|n,n,[1..(n*n)]|
	
	n=50;
	|n,n,[1..(n*n)]|~
	
	FOR(1..10,"SUM(1..(n*n))")
	
	FOR(1..26,"SUM(1..(n*n))") .graphin()
		
	CHIDIST(1..4,3..4)

	#a-z |x+""+y| #a-z
	#a-z |x+""+x| 

	
	[["cats1","dogs1"],"birds"]<<<[[2,[COS]],[SIN]]
	[["cats3","dogs3"],"birds3"]<<<<[[2,[COS]],[SIN]]
	[[2,[COS]],[SIN]]>>>>[["cats1","dogs1"],"birds"]
	
	
	// object programming.
	x :=
		{
		   "r": r,
		   "h": h,
		   "a": π<*>r<*>(r<+>(h^2<+>r^2)^0.5),
		   "v": π<*>r^2<*>h</>3
		} 
	x(1m,2m); 

	(0..100)<>degK<>degC
	
	(1..100..2)%
	
	SERIESOF("'x^'+x",10)
	
	a=1..100@SIN .mergeio() .graphin()	
	
	// works now.
	[1..10,1..10].at(SIN)
	[1..10,1..10].at(SIN,-100,2) // second param is subtractby and third param is scale by.
	[1..10,1..10].at("x",5)
	[1..10,1..10].at("x",5)
	[1..10,1..10].at("x",0,5)
	|10,10,1..1000|.at("x",[10,10],[5,5])
	|10,10,1..1000|.at("x",10) // still not what we wanted. That worked better with x,y index.
	|10,10,1..1000|.at("x",50) // seems more like it. How do we get it to align right?
	(|10,10,1..1000|~).at("x",50)
	(|100,100,1..10000|~).at("x",500)
	
	
	Ƒ getsin2(x)
	{
		∴(SIN(x)^2)    
	}
	getsin2(34..100)

	for(var x in 32..60)
	{
		OUTPUT(IMAGE("http://media1.santabanta.com/full1/Indian  Celebrities(F)/Vidya Balan/vidya-balan-" + x +"a.jpg",100,100))
	}


	a=1..1000;
	f:=x^3+45;
	a@f;
	
	// new array function.
	1..100.atevery(0,10)
	1..100.atevery(3,10)
	
	LOAD("loans");
	a=LOAN(100100,5%,12);
	a.PAYMENTS();
	LOAN(100100,5%,22).PAYMENTS()
	
	
	2000..2005@"CAL(x)"

	√(4m3)
	
	c:=√(a^2+b^2);
	c:=√(a<^>2+b<^>2); // SQRT is already units based.
	
	
	=TABLE2!B4:C6~
	=TABLE2!B4:C6.flatten().chunks(2)
	
	 2..10.explode().calci()
	//in this calci select all cells. then do a sigma sum.
	///got a SpreadSheetCalc Error TypeError: Cannot read property 'Cell' of undefined in extended rows.
	|4,3,1..10|.$(a:=[x].explode())
	|4,30,1..100..5|.$(a:=[x].explode())
	
	|4,30,1..100..5|.$(a:=[x].explode())
	
	function f1(x)
	{
		return(x+1)
	}
	f1(43);
	(f2:=x+1)(48);
	|4,3,1..10|.$(a:=[x].explode());
	|4,3,1..10|.$(x=>[x].explode())
	
	c=PMT(10%,10..24,1000,2000,1).io()
	
	
	SVD([1 0 1; -1 -2 0; 0 1 -1])
	
	|5,5,1..10|.$(MAGICSQUARE)
	
	|5,5,5..10|.$(ARRAY)																												
	
	STATS(PMT(10%,12..15,1000,1200..20000..1000,0..1))
	
	d3.csv.parse(ZText(2)) // to parse CSV strings.
	d3.csv.parseRows(ZText(2))
	
	//https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population
	// drop and from the table.
	data.toframe().where("d['Population']>1000000000")
	
	(1<>"millions of gallons2")<*>23m</>(1<>"millions of gallons3")
	
	SomeText.split("\n").spliteach("\t")
		// to parse tab file texts.
		-could make SPLIT to work like this also
		
	-SLIDERCONTROLS(B1)
		-FRACTAL(B1) and 1..(B1) @SIN .graphin() pointing to B1
		-then dynamically change the slider
	ZCOLOR()
	ZDATE()
	ZDATE(C1,"ENTER DATE",new Date("1/2/2018")) // default did not seem to stick in
	ZCOLOR(C1,"COLOR PICKER","#303030")
	ZEMAIL()
	ZDATETIMELOCAL()
	ZMONTH() 
	ZWEEK() 
	ZRANGE()
	ZURL()
		=HYPERLINK(B1) //to the control
	=ZTEXTBOX(A3,"test","title",/d+/)
	ZFILE(B3)
		-
	GETLOADEDCONTENT(#TABLE1!B3)
                 .replace(/\r\n/gi,"<br>")
				-from GlobalFileStores
	ZPROGRESS(B4,"PROGRESS IS",A2,C2,B2)
	ZMETER(B4,"PROGRESS IS",A2,C2,B2)

	etc
	etc
	
	ZORGCHART()
		-similar to diagram concept
		
	TIMER(C2,1000,1,true,true)
		-C2 will change by 1 every 1 second
		-put FRACTAL pointing to this maybe
	ZUP(B2,200,20,"+")
	ZDOWN(B2,200,20,"-")
	ZUPDOWN(B2,200,20,"+/-")					
	ZUPPRESS(B2,200,20,"+")
	ZDOWNPRESS(B2,200,20,"-")
	ZUPDOWNPRESS(B2,200,20,"+/-")
	
	ZNUMBER(B2,200,"+/-")
	
	
	CHORDDIAGRAM(1..10@"TAN(x)")
	
	
	LOAD("https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.1/p5.js")
		-can include p5.js
		-https://p5js.org/examples/instance-mode-instance-container.html
			
	XNPV(0.1..10..1,[-10000,2750],[#1/1/2008,#3/1/2008]) .o() .graphin()	
	
	CALLLISP("(CHIDIST 1 (2 3 4) 32)")
	CALLLISP("(+ 1 (2 3 4) 5)")
	CALLLISP("(CHIDIST (3 4) (4 5) )")
	
	-filter: url(#turbuMap); etc gives nice effects
	
	((0..100..10)%)@(x=>NPV(x,[-75000,10000]))
	
	NPV(0.1..1..0.01,-10000,3000,4200,6800)
	
	v:=u<+>a<*>t;
	v ⩨;
	v(0,%g,(0..100)<>s)

	BEZIERPOINTS([[0, 0], [1, 1], [2, 2]],100)
	BEZIERPOINTS([[0, 0, 0], [1, 1, 1], [2, -3, 6]],10)
	
	(1..100)∫(x=>x^2)
	
	LATEX(INTEGRAL("sin(x)"))
	LATEX(ROOTS("(x+3)*(x-4)"))
	LATEX(ROOTS("(x^2+2*x+45)"))
	
	NUMERATOR("3/33+4/44")
	DENOMINATOR("3/33+4/44")
	RATIONALIZE("3/33+4/44")
	LATEX(EXPAND("x^2+x^3*(x+3x+3)"))	
	LATEX(SIMPLIFY("(x-4)/(x+3)*(x+3)"))
	
	a=SIMPLIFY("(x-4)/(x+3)*(x+3)");
	b=FUNCT(a)
	b(23)
	
	LATEX(ALGEBRA("(x-4)/(x+3)*(x+3)"))
	LATEX(INTEGRAL("z^2+x^4","x","z"))
	
	a=FUNCT(INTEGRAL("x^5/2+x^8"))
	1..10@a

	b=FUNCT(INTEGRAL("z^2+x^4","x","z"));
	c=b ⩨;
	c(1..10,2..20)
	
	DERIVATIVE("x^2+y^2","[x,y]")
	DEFINITEINTEGRAL("x^2","x",0,10)
	
	ALGEBRA("A=[[a,b],[c,d]]\ndet(A)")
	ALGEBRA("A=[[a,b],[c,d]]\ndet(A)\ninv(A)")
	SIMPLIFY("((n^2)!/(n^2-1)!)/(x)")
	1..100@FACTOR
	LATEX(SIMPLIFY("a*b^2+a*c"))
	LATEX(EXPAND("(x-1)*(x-2)^3"))
	ROOTS("3 x + 12 + y = 24")
	ROOTS("a*x^2+b*x+c") 
	ROOTS("(x^4+x^3)*(x^4*x^2)")
	NROOTS("x^16+x^15+2")
	ALGEBRA("nroots(x^16+x^15+2)")
	LATEX(ALGEBRA("nroots(x^16+x^15+2)"))
	
	fns=1..10@(x=>"(x+1)^"+x)
	fns.$(EXPAND)
	
	1..100@(x=>ALGEBRA("prime("+x+")"))
	
	ALGEBRA("factor(100!)")
	
	INTEGRAL("u+a*t","t") // integral of v with dt is S
	ALGEBRA("(a+b)^3")

	fns=1..10@(x=>"(a+b)^"+x)
	fns.$(ALGEBRA)
	ROOTS("x^2+3x+345")
	
	ALGEBRA("(a+b)*(a-b)")
	
	// in algebra mode
	c=[[a,b],[d,e]]
	det(c)
	inv(c)
	
	integral(sin(x)^2+cos(x)^4)
	integral(u+a*t)
	
	LATEX(INTEGRAL("u+a*t"))
	LATEX(INTEGRAL("u*t+a*t^2","t"))
	LATEX(INTEGRAL("u*t+a*t^2","t","u"))
	
	ALGEBRA("taylor(e^x,x,5)")
	
	TAYLOR("1/x","x",3,1)
	TAYLOR("sin(x)","x",3,1)
	TAYLOR("log(x)","x",3,1)
	TAYLOR("log(x)+sin(x)","x",3,1)
	RATIONALIZE("a^2/b+b/a")
	1..10@(x=>ALGEBRA("legendre(x,"+ x + ")"))
	1..10@(x=>LATEX(ALGEBRA("legendre(x,"+ x + ")")))
	1..10@(x=>LATEX(ALGEBRA("laguerre(x,"+ x + ")")))
	
	A=eval(NROOTS("2x^2+4x-5"))
	A[1]
	
	// lisp. add such a mode
	CALLLISP("(SIN (1 2 3))")
	
	1..10@"1/x"
	
	|4|.$(x=>x<>m)
	
	units.on;
	ઔક=48m;
	ઞટ=334cm;
	ઔક/3*ઞટ
	
	GEOCODE("10777 Westheimer, Houston, TX 77042")
	
	SHA256(["This is a test","hello"])
	
	(1..10@"'(a+b)^'+x").$(EXPAND)
	
	1..10@(SERIESSTR("POWER(_x , x)",1..10).tofunctions())
	
	d=[["z^1","z^3"],["z^4","z^5"]].tofunctions()
	d.$(x=>x(3))
	
	[["x^2","x^7"],["x^2","x^7"]].$(FUNCT)[0][0]
	
	
	DIVISORS(10)
	PRIMEFACTORS(100)
	ABUNDANTNUMBERS(110) // wiki upto
	DEFICIENTNUMBERS(110) // wiki upto
	PERFECTNUMBERS(10)  // wiki upto
	DIGITS(1..100)     // digits
	
	1..100.inner(2) // skip 2 and give inner elements
	1..100.outer() // and give outer 2 elements
	1..100.outer(2)  // and give outer includingsome (2 here) elements
	
	1..100.allslices()	 // slices of length 1 to end	
	1..10.allslices(true) // reverse  slices of length 1 to end 
	
	1..10.buckets() // returns an object with key frequency pairs
	a=1..10.fillwith(1..3).buckets()
	
	a=1..10.fillwith(1..3).buckets()
	b=FLATTENOBJECT(a)
	
	d=1..10@SIN;
	d.columns("SIN")
	
	d=1..10@SIN;
	d.io().columns(["Number","SIN"])

	d=1..10@SIN;
	d.io().column("Number","SIN")
	
	d=(#TABLE1) .toframe() 
	d.sortbykey("Column2")
	
	d=(#TABLE1) .toframe() ;
	d.sortbykey(4)	
	
	d=(#TABLE1) .toframe() ;
	d.bykey(4)
	
	d=(#TABLE1) .toframe() ;
	boo=d.bykey(4);
	boo[15]
	
	ISINTEGER(15)
	ISINTEGER("15")
	ISSAFEINTEGER("15")
	ISSAFEINTEGER("15.34")
	
	1..100@["z^2",SIN,COS]
	
	BERNOULLINUMBERS(0..30)
		- not accurate after 12 or so
	PYTHAGOREANTRIPLETS(10)
	TRIANGULARSEQUENCE(1..100)
	NSTEPFIBONACCI(1,10)
	
	CONTINUEDFRACTION([2,3,4,"..."])
	SERIESSTR("1/x^_x",1..5).concat("...").tolatex("+")
	SERIESSTR("1/x^_x",1..5).concat("...").tolatex("+-".split(""))
	SERIESSTR("1/x^_x",1..9).concat("...").tolatex("+-".split(""))
	SQRT(5..100).$(x=>(x+"").letters())
	5..100.$(x=>ALGEBRA('sqrt('+x+')')).$(x=>x.letters())
	
	PYBERNOULLI(1..30)
	
	"+-".letters()
	
	1..1000@(n=>(1+1/n)^n) .last(10)
		- to see how e is calculated
	also
	SUM(0..1000@"1/x!")
		-both should add to E
		-more numbers closer to result
		
	PYBERNOULLI(14)
	PYBERNOULLI(0..30)
	ABS(BigInt(-100000))
	PYBERNOULLI(0..60) - crashes and gives string 6 issue
	PYBERNOULLI(39) gave non-zero result why???
	PYBERNOULLI(25)
	
	(13%%23) .add(12%%23)
	
	a=DIVISORS(1..10)
	.io()
	//.$$(r=>r.print())
	
	1..10@DIVISORS
	.io()
	//.$$(r=>r.print())

	c=1..10@DIVISORS
		.io()
		.$$(r=>r[1].length)
		//.transpose()
	c.sortbykey(0)

	// still not working as expected	
	d=1..100@DIVISORS
		.io()
	e=d	.$$(r=>[r[0],r[1].length])
		//.transpose()
	f=e.sortbykey(1)
	f
	
	FACTORIAL(BIGN(1..100))
	
	a=SUM(POWER(2,BIGN(200)),POWER(2,BIGN(201)))
	a=SUM(POWER(2,BIGN(200)),POWER(2,BIGN(201)))
	
	ACKERMANN(3,0..5)
	TETRATE(2,0..4)
	TETRATE(3,0..3)
	PENTATE(2,0..3)
	TETRATE(BIGN(4),3)
	TETRATE(4,3)
	
	POWER(2,BIGN(1..100))
	
	POWER(2n,250)
	
	23n<+>3434343343434343434343434343434343443n
	
	(2^233n)<>n
	(4%%6)<+>(10%%13)
	
	a=10d45r4
	a.sin()
	
	((1.11%%112)<>m)<->((5%%12)<>cm)
	
	a=10.3334d2;
	b=12.33d7;
	[a.times(b), a*b]
	
	((1000n)<>mi)<*>((10n)<>km)		
	((10000000000000000000n)<>mi)<*>((1000000000000000000000000000000000n)<>km)		
	a=[(1%%3),2]<>m
	
	a=COMPLEX(2..4,3)
	SIN(a)
	
	a=COMPLEX(1,2,"j")
	IMSIN(a)
	
	Check all these
		IMABS
		IMAGINARY
		IMARGUMENT
		IMCONGUGATE
		IMCOS 
		IMCOT
		IMCOSH
		IMCSC
		IMCSCH
		IMEXP
		IMDIV
		IMLN
		IMLOG10
		IMLOG2
		IMPOWER
		IMPRODUCT
		IMREAL 
		IMSEC 
		IMSECH
		IMSIN
		IMSINH
		IMSQRT
		IMSUB
		IMSUM
		IMTAN
	
	0.75f;
	0.25f;
	0.4f;
	SIN(30deg)<>f
	SIN(30deg)<>f2
	SIN(30deg)<>f3
	SIN((1..30)<>deg)<>f3
	SIN((1..30)<>deg)<>f1
	COS((1..30)<>deg)<>f1
	COTAN((1..30)<>deg)<>f1
	SIN((1..100)<>d32)
	SIN((1..100)<>d32)
	
	ATANH(1%%1)
		Infinity
	
	COMBIN(3000,40n)
	
	FACT(400n)
	
	SQRT(2d300)
	
	SIN((1..10)+ⅈ(3..4))
	
	POWER(1+ⅈ3,3)
	
	LONGPI(400)
		.split("")
		.buckets()
	
	(1+ⅈ3)<*>(2+ⅈ4)
	
	units.on;
	(1+ⅈ3)*(2+ⅈ4)
	
	a=(1+ⅈ3)<>m;
	b=(1+ⅈ3)<>m;
	c=a<*>b;
	
	a=(1+ⅈ3)<>m;
	b=(1+ⅈ3)<>m;
	c=a<*>b;
	
	a=(1+ⅈ3)<>m;
	b=(1+ⅈ3)<>ft;
	c=(a<*>b)<>cm2;

	((1%%6)<>m)<+>((34%%7)<>mm)
	
	LATEX((1%%6)<>m))
	LATEX((1%%6)<>m)
	
	((1+ⅈ9) <>m)^23
	
	a=SIN(1+ⅈ4);
	b=SIN(14+ⅈ34);
	(a<+>b)<^>2

	a=SIN(1+ⅈ4);
	b=SIN(14+ⅈ34);
	(a<+>b)<^>(2+ⅈ3)

	a=SIN(1+ⅈ4);
	b=SIN(14+ⅈ34);
	(a<+>b)<>mm<^>2

	// flu types
	ZC(
		[1..17,1..10]@"'H'+x+'N'+y"
			.parts(17)
	)
	
	a=SIN((1..30)<>deg)<>f3;
	a.$(x=>x.value())

	a=10+ⅈ45;
	b=23+ⅈ34;
	SIN(a)
	
	a=(10..15)+ⅈ(45..56);
	b=23+ⅈ34;
	SIN(a)
	
	a=4+ⅈ5;
	a=a<>m;
	a<>cm
	
	a=4+ⅈ5;
	a=a<>m;
	a<>cm

	((1+ⅈ3)<>cm)<*>((2+ⅈ4)<>mm)

	((1+ⅈ3)<>m)<*>((2+ⅈ4)<>mm)

	AVG(1cm,1m)
	
	SUM((1+ⅈ3)<>m,1m)
	
	AVG((1+ⅈ3)<>m,1m)
	AVG((1+ⅈ3)<>m,1m)

	-do VAR VARCORE etc.
	STDEV((1+ⅈ3)<>m,1m)
	
	STDEV((1+ⅈ3)<>m,1m)
	
	STDEV((3)<>m,1m)
	
	SUM(1%%4,1%%3)
	
	SUM(1%%4<>m,1%%3<>cm)
		-confusing since m was applied only to denominator
		-should we apply to the entire fraction if any have a unit?
	
	SUM((1%%4)<>m,(1%%3)<>cm)
	
	MINUS(2m,100cm)
	
	MAX(2.1%%4cm,100cm)
	
	MIN(12000m,2km)
	
	MIN(1m,2kg)
	
	MIN(1+ⅈ43,1+ⅈ30)
	
	IMABS([1+ⅈ43,1+ⅈ30])
	
	MIN(1+ⅈ43,1+ⅈ30)
	IMABS([1+ⅈ43,1+ⅈ30]);
	(1+ⅈ43).subtract(1+ⅈ30)
	MIN(3,1)
	
	PRODUCT((1..10)<>m)
	
	PRODUCT(1m,2m,4)
	
	DIVIDE(1.1%%3m,2%%3kg)
	
	MINUS(1.1%%3,2%%3)
	
	OR(1%%3)
	
	LARGE([1m,2cm,3cm],1)
	
	SMALL([1m,2cm,3cm],1..4)
	
	SMALL((1..10)<>m,1..4)
	
	HARMEAN(4,5,8,7,11,4,3)
	HARMEAN(4%%5,5,8,7,11,4,3)
	GEOMEAN(4,5,8,7,11,4,3)
	CORREL([3,2,4,5,6],[9,7,12,15,17])
	CORREL([3m,2cm,4,5,6],[9m,7cm,12,15,17])
	
	SortAsFlatArray(((1..10)<>m).concat(1000cm) ⋱)
	
	SORT(((1..10)<>m).concat([[900cm]]));

	FACTORIAL((1..63)<>n)
	FACTUNTIL((1..10)<>n,5)
	FACTORIAL((2..106)<>n)
	
	SUMXMY2((1..10)<>m,(11..20)<>m)
	SUMX2PY2((1..10)<>m,(11..20)<>m)
	SUMX2MY2((1..10)<>m,(11..20)<>m)
	
	[1,2,3].backward(AVG)
	[1,2,3].backward(sum,15)
	[1,2,3].backward(sum)
	[1,2,3].backward()
	
	PRIMES(10)
		.allslices()
		.$$(r=>r.backward())
		
	SUM(4%%5,1%%6)

	Z3EVAL("(155n)!")	
	NTHROOT(3%%4,4)
	NTHROOT(3%%4,4).value()
	NTHROOT(-3%%4,4)//.value()

	FACTDOUBLE(1..100)
	FACTDOUBLE(1..100,5)
	MULTIFACTORIAL(1..100,5)
	MULTIFACTORIAL(1..100,5,10)
	
	FACTDOUBLE(230n)
	FACTDOUBLE(2300%%213)
	FACTDOUBLE(11.1%%3m)
	FACTDOUBLE(11.1%%3m)
	FACTDOUBLE(32%%5)
	
	FACT(6+ⅈ3)
	FACT((1..10)+ⅈ(3..10))
	FACTORIAL(35%%4)
	FACTORIAL(35%%4<>m)
	FACTORIAL(34n)
	NTHROOT(34d100,3)
	NTHROOT(34d3,3)
	
	PERCENTAGES(1%%4,2%%4,3%%3)
	RATIOS(1%%4,2%%4,3%%3)
	RATIOS(1m,2cm,45nm)
	
	COMBIN(34%%3,2)
	COMBIN(34%%3,2)
	COMBIN(34,2)
	 // why are they so different?
	TRUNC(44%%5)
	TRUNC(44%%5)
	TRUNC(44%%5,1)
	TRUNC(44%%3,0)
	
	PERMUT(34%%3,2)
	PERMUT(34/3,2)
	
	a=((1m)..(10m))	
	a=((1m)..(10m)..(2m))	
	
	LT(BIGN(0),(0.001))
	LT(BIGN(0),BIGN(1))
	LT(BIGN(10),BIGN(1))

	a=((1d)..(10d)..(2n))
	a=((1%%3)..(1%%2)..(1%%6))
	a=((1%%3)..(1%%2)..(1%%100)) ~
	a=((1%%3)..(1%%2)..(1%%100)) ~
	
	SUM(1%%2<>cm,4m)
	
	a=(1m)..(200cm)
	
	KFUNCTION((1..20)<>n)
	SUPERFACTORIAL((1..20)<>n)
	
	NONFALSEVALUE(1)
	NONFALSEVALUE(BIGN(1))
	NONFALSEVALUE(BIGN(0))
	
	LT(FRACTION(1,2),0.000000001)
	GT(FRACTION(1,2),0.000000001)
	GT(FRACTION(1,2000000000)<>m,0.000000001cm)
	
	GT(FRACTION(1,200)<>cm,0.000001km)
	GT(FRACTION(1,200)<>mi,1.01m)
	
	#MONTHS!A1:B4
	A=1..100;
	#A!A1
	
	A=MAGICSQUARE(3);
	#A!A1
	
	A=MAGICSQUARE(3);
	#A!A1:C2
	
	#MONTHS!A1:A4
	#MONTHS!1:4
	#DAYS!1:4
	#MONTHS!4:7
	
	MULTIPLES(1000,10m,2mm,60,false) 
	MULTIPLES(100,10mm,2m,60) 
	
	((2%%4)! ).value()
	((2%%4)! )
	
	4.5!
	
	BINOMIAL(190,2)
	BINOMIAL(10,2)
	BINOMIAL(1..10,2)
	
	|4,4,RANDOM|.$(FRACTION)
	UNIFORMDISTRIBUTED(10,1,100).$(FRACTION)
	
	a=[1 2 4 43 32 2 12 2 1];
	a ⋰;
	
	a=[1mm 2mm 4m 43cm 32mm 2mm 12cm 2cm 1mm];
	a ⋰;
	
	a=[1mm 2%%34 4 43 32 2 12 2 1];
	a ⋰;
	a.nounits(false,true)
	a
	//a.nounits()
	a.nounits(true,true)
	
	a=1+3i; 
	b=1+ⅈ3;
	c=1+3ⅈ;
	d=1+3j; 
	e=1+3k; 
	b1=23;
	f=1+b1<>k; 
	[a,b,c,d,e,f]
	IMABS(f)
	
	a=10;
	b=23.33;
	y=a+b<>k; 
	
	a=SUM(4,3i<>m);
	a=SUM(4,3i<>m);
	
	GAMMAFUNCTION(10.00001131+3i)
	NORMDIST(42,40,1.5,TRUE)
	NORMDIST(42d30,40,1.5)
	
	// this followed by normal accuracy still had original accuracy
	NORMDIST(42d30,40,1.5)
	NORMDIST(42,40,1.5)
	NORMDIST(42d4,40d55,1.5)
	CHIDIST(18.307d343,10)
	
	SUM(1.23d34,1%%3)
	a=SUM(1%%4<>cm,1%%5<>m);
	SUM(1%%5<>m,1%%3)
	
	SUM(20000000000000000000000000000000n,1.5d)
	a=SUM(200000000000000000000000000000001n<>m,1.22222222222222233232323235d455)
	GAMMADIST(23,1,3..10)
	CHIDIST(1..10,(2..20)<>d56)
	CHIDIST(0.5d,3d)
	
	MAX(1.1%%4,1.2,1.2d)

	EXP(1d309)
	a = 0..(1%%4)..(1%%8)
	(0<>n<>m)..(10<>n<>m)..(2<>n<>m)
	a = 0..(0.1<>m)..(1<>cm)
	SUM((0.5)<>d<>cm,4<>n<>m)
	
	((1000n)<>mi)<*>((10n)<>km)
	((10000000000000000000n)<>mi)<*>((1000000000000000000000000000000000n)<>km)

	NTHROOT(3%%4,4) // now looks good
	
	FACTORIAL(35%%4<>m)

	
	ROUNDDOWN(76.9,0)
	ROUNDDOWN(76.9,0)
	
	((5n)!)!
	
	SPLIT("TEHTIS",/T/g)
	
	LCM(12m,4cm)
	LCM(12cm,4m)
	LCM(4m,12cm)
	
	ROUNDUP(3.2,0n)
	ROUNDDOWN(3.2,0n)
	NTHROOT(64,2n)
	
	ROUNDUP(3.2,0n)
	--//3
	GCD(2<>n<>m,4<>d<>cm)
	--//2
	NTHROOT(64,2n)
	--//1
	NTHROOT(2+ⅈ2,4d)
	--//SORRY! Invalid Param
	NTHROOT(2+ⅈ2,2-ⅈ1)
	--//1
	NTHROOT(2+ⅈ2,5)
	--//1.2311444133449163
	POWER(1%%2,2n)
	--//null
	POWER(1+ⅈ2,2d)
	--//0
	POWER(1+ⅈ2,1%%3)
	--//0
	POWER(2n,0.5)
	--//1
	POWER(1+ⅈ3,(3d))
	--//0
	
	RANDOMNUMBERGENERATION(10,10,"NORMAL")
	
	a=(1..10);
	a.explode()
	
	a=(1..10);
	a.map(x=>SIN(x))
	- not 
	a=(1..10);
	a.map(SIN)
	// explain why in next session

	// try logarithmic
	1..10@"2^x" .graphin()
	1..10@"x^2" .graphin()
	
		
	b=[
		1 2 3cm 4;
		4 5 6 4;
		7m 8 9 5;
		2 83 94 55
	];
	DET(b)
	//gives with units etc
	
	b=[
		1 2 3cm 3;
		4 5 6 4;
		7m 8 9 5;
		2 83 94 55
	];
	DET(b)
	// this will give 0 which is actually correct

	b=(|4||/|3);
	c=  b<>f3
	
	function AttackerSuccessProbability(q, z)
	{
		p = 1.0 - q;
		lambda = z * (q / p);
		sum = 1.0;
		var i, k;
		for (var k = 0; k <= z; k++)
		{
			var  poisson = exp(-lambda);
			for (i = 1; i <= k; i++)
				poisson *= lambda / i;
			sum -= poisson * (1 - pow(q / p, z - k));
		}
		return sum;
	}

	AttackerSuccessProbability(0.45,880)

	XFOR(x=>AttackerSuccessProbability(0.1,x),0.001)
	0..0.3..0.1.$(y=>XFOR(x=>AttackerSuccessProbability(y,x),0.001))

	AttackerSuccessProbability(0.1,4.906820048461781)
	
	XFOR(x=>POWER(2,x),1..43)
	XFOR(x=>POWER(2,x),64)
	
	GraphSurfacePlotWithContours(|50|)
	
	ZCanvas(),""
	ZDiv(),""
	ZSpan(),""
	ZCanvasx(),""
	ZDivx(),""
	ZSpanx(),""
	// "" to not extract the element and show it on calcresult
	
	CTRL+ALT+D to toggle doodle
	
	[[1,3,4],[2,3,4]].$C(1..3,SUM,3,1)
	
	1m</>3s
	1m</>3(s-3)
	
	z=[10000,2..3,12..16,20000]@PMT;
	z.io().crosstab() 
	// make these location, function array, parameter array
	z.$C([2,2,2,3],SIN)
	
	a=ARRAY(4,4,0).deal(100)
	b=a.$C(2,"x^2");

	MS(9)	 // magicsquare
	TM(19)	// Test Matrix
	
	TM(19,67)
	
	MIN("1/1/2010","1/2/2010")
	MAX("1/1/2010","1/2/2010")
	
	500degK<>degC
	
	 a=1..10; a.checktype("number")
	a=#a..z; a.checktype(["number"])
	a=#a..z; a.checktype(["string"])
	
	
	CRITBINOM(20,0.75,0.65)
	BINOMDIST(15.5,20,0.75,true)
	
	units.on;
	a=1m;
	a+=1; 
	LONGIFY(BETADIST)	
	
	a1:=a+b;
	LONGIFY(a1)
	ARRAYFY(a1)
	a1((23..46)<>m,44.454455455555555555555555555555555555555555555555555555555555555555cm)

	ops.on;
	a:=a+b; // will not work as this will be a recursive call
	a(9,23)		
	
	ops.on;
	a:=b==0?1:a(b-1)*3; // will not work as this will be a recursive call
	a(9,23)		

	ops.on;
	a:=ac+b;
	a(9,23)							

	ops.on;a=34;b=34;
	a=a<>cm+b<>m;
	//a(9,23)					
	
							
	ops.on;
	a:=b+c;
	a(9d,2.33333333333333333333333333333333333333333333d)

		
	ops.on;
	a:=b+c;
	a(933333333333333333333333333334343434444444444444444444444443333n,2333333333333n)
	
	FDZ(1..10,10)
	
	CONVERGE(SIN,50deg,100)
	CMP(2..10,3..10)
		
	1..10@SIN .graph("pie")
	1..10@SIN .graph("bubble")		
	1..10@SIN .graphbox("bubble")		
	
	
								
	JULIA(-0.116,1.04)
	JULIA(-0.16006,0.849)
	
	JULIA(#a-e)
	
	r=8(degC);
	n=2(mol);
	p=r<*>n;
	
	1℃<>degK
	
	a=1..100;
	console.log(a,1,2,3,"CAT");
	console.log(PMT(5%,10..50,19999,1,0))
	b=1..200;	
	
	DECIMALPART(9.1003)
	a=DECIMALPART(9.1003d30)
	
	ENFORCEINTEGER(-5.5..-3.4)
	ENFORCEINTEGER(-5.5..)
	ENFORCEINTEGER(-5.5..-9)
	
	ENFORCEINTEGER(-5.5..34)
	ENFORCEINTEGER(-5.5..34)
	ENFORCEINTEGER(-5.5e-12..-34e12)
	
	NEXTPOWER(6,0.2)
	NEXTPOWER(123)
	NEXTPOWER(123,10)
 
	B1={};
	B1["apple","peach"]=[2,4]
	B1.apple;
	B1.peach; // works;

 
	B1={};
	B1["apple","peach"]<<<[2,4];
	[B1.apple,B1.peach];
	
	A={};
	[2,3]>>>>A[1,2]
	
	FOREACH(1..2,2..4,"x*3*y")
	FOREACH(1..2,2..4,z=>x*3*y)
	
	A=[];
	[2,3]>>>>A[1,2]
	
	
	b=A[1,2,4]
	
	A=1..10;
	A[1,[1,2],(3,4)]
	
	A=1..10;
	A[1,[1,2],(3)]
	
	A=MAGICSQUARE(5);
	A[1,[1,2],(3,4)]
	
	
	B1={};
	B1["apple","peach"]=[2,4]
	B1.apple;
	B1.peach; // works;


	B1={};
	B1["apple","peach"]<<<[2,4] // <<<< or <<<
	B1.apple;
	B1.peach; // works;



	FOREACH(1..2,2..4,"z=x*3*y") // will not work due to z
	FOREACH(1..2,2..4,"z:=x*3*y") // will not work due to z
	FOREACH(1..2,2..4,z=>x*3*y)

	FOREACH(1..2,2..4,"x*3*y")
		
	B1={};
	B1["apple","peach"]<<<[2,4];
	B1.apple;
	had issues

	B1={};
	B1["apple","peach"]<<<[2,4];
	[B1.apple,B1.peach];

	1..10..2
	a=1..10..3; does not work
	a=1...10...3; does not work

	
	1.0e-2..1000...2
		
	a=1...10...3;
	a=1...10...3;
	a=1..10..3;
	a=1...10..3;
	a=1e10...10e-2...3;
				// had issues
	a=1e10...10e-2...3;			
	a=1e-10...10e-2...3;	

	MMULT((1..3)***3,(1..3)***3)	
	1..4***3
	3..4**3
	(3..4)**3
	
	##Value Of Color =34;
		//works now had to add parser two functions also for get and set of z3globals flag
	a=a#; // we need to use this for arrayfy and # as undefined	
	//	-see how to make this work
	a=a#;
	a=#abc;	
	a=b#;
	a=b#[1,2,3];
	a=b#[1,2,3];// # has zero precedence. what is best?
	//test simple range logic also
	a=b#[1,2,3];
	a=b# ;
	a=b#[2,2];
	a=function (a){return(a+1)}#[2,4];
	a=#1/1/2030
	a=#ac
	a=## Long Variable Names;
	a=##Long Variable Names;
	
	a="34 ## 344";
	##a b c=a;
	##a b c	
	
	1..10|#|1..20
	1..10|##|1..20
	[1..10]|#|[1..20]
	[1..10]|##|[1..20]
		
	1..10.pieces(3)
	1..10.pieces(3,SUM)
	1..10.piecesasarray(3)
	
	PI(300)<*>4
	1..10@(n=>ACOS(UNITSOF(-1,("d"+n))));
	
	PASCALTRIANGLE(20,true)
	
	REDUCEFUNCTION(x=>1.4*x*1-x,10,0.5..4..1)
	REDUCEFUNCTION(x=>1.4*x*(1-x),10,1.5..4..0.1,true)
	 // ?
	
	ISPRIME("357686312646216567629137"<>n) 
	
	PI(1024)
	PI(1..100)
	
	ops.on;
	5d45^(1/2);
	
	φ=GOLDENRATIO();
	[φ^2,1-φ]
	
	a=12222222222222222222222222222222<>n;
					a^2
	
	CODEOF("codesegment1")	
				
	Ctrl+f9 on selected text already makes it an equation
	
	[1..9,2..10]@SELF
		.print()
		
	[1..9,2..10]@IT
		.print()
		// seems similar to IT and SELF
		// still has [[[structure]]]
		
		
	a=1..100;
	a.f(x=>LT(x,10))
	
	(1%%2) .mediant(1%%4)
	
	// Combinatorial Pairs
	CP(1..9,2..10)
	CP([1..9,2..10])
	CP([1..9,2..10,3..10])
	
	MEDIANT(1%%2,1%%3,1%%5) // https://en.wikipedia.org/wiki/Mediant_(mathematics)
	MEDIANT(1.223,445.55)
	MEDIANT([1.223,445.55])
	MEDIANT(1..10@RECIPROCAL)
	MEDIANT(1..100.$(x=>1/x))
	
	FIBONACCI(20)
		.$(RECIPROCAL)
		.chunks(2)

	DIFFSTRING("test","test1")
	
	FIBONNACI(200n)~
	FIBONNACI(200)~
	
	POINT(12,3,5)
		.magnitude()
	GOLDENANGLE(true,1d100)
	GOLDENANGLE(false,1d120) // has some issues
	GOLDENANGLE(false,1d120) - seems like UNITSOF with same units has an issue of double reduction
	GOLDENANGLE(false,1d1000)
	GOLDENANGLE(false,UNITSOF(1,"d120")) +""
	
	ops.on;
	φ=GOLDENRATIO(false,1d100);
	fibonnaci=FIBONACCI(2000<>n);
	[1476..1487]@(function wal(n){return([φ^n,(fibonnaci[n])*φ+(fibonnaci[n-1])]~)})

	
	MOD(3928413764606871165730n,(3..10)) // gives zeros since these are decimals etc.
	MOD(3928413764606871165730n,(3..10)	<>n)
	
	// need page guides off for this to work. check menu
	a=[
		["id","left","background","duration","animate"],
		["1Space","34px",["rgb(255,2,0,1)","rgb(255,2,250,1)"],3500,"animate"]
	];
	RENDER(a,"#1Space")
	
	a=[["id","left","background","duration","animate"],["1Space",["34px",400],["rgb(255,2,0,1)","rgb(255,2,250,1)"],13500,"animate"]];RENDER(a,"#1Space")

	a=[["id","rx","ry","stroke","duration","animate"],["bg_VMLShape1",["34px",40,100],[134,40,100],["rgb(255,2,0,1)","rgb(255,2,250,1)"],13500,"animate"]];
	RENDER(a,"#bg_VMLShape1")
	// with one element of circle

	// the drawing of jj net	
	x=500..0..-10
	a=x.mergerows(0..0);
	b=x.mergerows(0..0).m(r=>r.reverse()).reverse();
	c=a.mergerows(b)
	d=c.m(r=>["line",r])
	ab=RENDER(d)
	e=d.map(r=>[r[0],[r[1][0],500-r[1][1],500-r[1][2],r[1][3]]])
	RENDER(e,ab)
	
	a=
		[
			["id","x1","y1","stroke","duration","animate"],
			[$(ab).find("line"),["34px",40,100],[134,40,100],["rgb(255,2,0,1)","rgb(255,2,250,1)"],13500,"animate"]
		];
	RENDER(a,"#SvgjsSvg1107")
	// with one element of circle
	
	""

	
	//simpler
	a=0..500..10;
	b=(0).replicate(51);
	x=a.mergerows(b)
	y=b.mergerows(a.backward())
	r=x.mergerows(y)
	pts=r.m(r=>["line",r])
	s=x.mergerows(y)
	sg=RENDER(pts);
	a=
		[
			["id","x1","y1","stroke","duration","animate"],
			//[$(ab).find("line"),["34px",40,100],[134,40,100],["rgb(255,2,0,1)","rgb(255,2,250,1)"],13500,"animate"]
			["line",["34px",40,100],[134,40,100],["rgb(255,2,0,1)","rgb(255,2,250,1)"],13500,"animate"]
		];
	RENDER(a,sg)
	""
	
	//simpler
	a=0..500..10;
	b=(0).replicate(51);
	x=a.mergerows(b)
	y=b.mergerows(a.backward())
	r=x.mergerows(y)
	pts=r.m(r=>["line",r,"liner"])
	pts.header=["type","coordinates","class"]
	s=x.mergerows(y)
	sg=RENDER(pts);
	a=
		[
			["id","x1","y1","stroke","duration","animate"],
			//[$(ab).find("line"),["34px",40,100],[134,40,100],["rgb(255,2,0,1)","rgb(255,2,250,1)"],13500,"animate"]
			["line",["34px",40,100],[134,40,100],["rgb(255,2,0,1)","rgb(255,2,250,1)"],13500,"animate"]
		];
	RENDER(a,sg)
	""
	
	MS(10).mergecolumns(MS(10))
	MS(10).mergerows(MS(10))
	MS(10).mergerows(10)
	MS(10).mergecolumns(12)
	MS(10).mergecolumns((10).replicate(10))
	
	
	
	
	a="🂱 🂲 🂳 🂴 🂵 🂶 🂷 🂸 🂹 🂺";
	a.split(/\s/).shuffle()
	
	a=a2z.split("")
	CP(a,a).M(r=>r.join(""))
	
	CHIDIST(CP(1..10,2..20))
	
	DIGITS(134002522254444444444434545454545454545n)
	DIGITS(134002522254444444444434.545454545454545d33,false,false)
	DIGITS(134002522254444444444434.545454545454545d33,false,true) // ignores no numbers
	
	https://twitter.com/SrinivasR1729/status/1308034763630895106	
	ops.on;
	sumprimes=
	num=>((1..300)<>n)@(n=>ISPRIME(SUM(DIGITS(num)^n)))
			.io()
			.filter(r=>r[1]==true)
	sumprimes(16)			
	
	// american flag 3
	RENDER(
		[
			["type","x","y",		"width","height","fill",				"count","shape","id","href","sides","size"],
			["rect",10,(i)=>i*20,	400,	20, 	(i)=>(i%2)?"white":"red"	,15,,,,,],
			["rect",10,	0,			200,	140,	"blue"						,1,,,,,],
			["star",50,	0,			200,	140,	"white"						,1,true,"star11","","12",10],
			["use",(i)=>((i)%6)*30+50,	(i)=>((i+1).intdiv(6))*30+50,			300,	140,	"white"						,6*5,false,"","star11","",300],
			["use",(i)=>((i)%5)*30+20+50,	(i)=>((i).intdiv(5))*30+20+50,			300,	140,	"white"						,4*5,false,"","star11","",300]
		]
	)			
	""
	
	// american flag 4 final
	RENDER(
		[
			["type","x","y",		"width","height","fill",				"count","shape","id","href","sides","size"],
			["rect",10,(i)=>i*20,	400,	20, 	(i)=>(i%2)?"white":"red"	,13,,,,,],
			["rect",10,	0,			200,	140,	"blue"						,1,,,,,],
			["star",50,	0,			200,	140,	"white"						,1,true,"star11","","12",10],
			["use",(i)=>((i)%6)*30+30,	(i)=>((i).intdiv(6))*25+15,			300,	140,	"white"						,6*5,false,"","star11","",300],
			["use",(i)=>((i)%5)*30+20+25,	(i)=>((i).intdiv(5))*25+20+10,			300,	140,	"white"						,4*5,false,"","star11","",300]
		]
	)			
	""
	
	// indian flag final
	RENDER(
		[
			["type","x","y",		"width","height","fill",				"count","shape","id","href","sides","size","cx","cy","r","stroke","stroke-width","points","transform"],
			["rect",10,(i)=>i*90,	400,	90, 	["orange","white","green"]	,3,,,,,,],
			["circle",,,,,		,1,,,,,,200,135,40,"blue",5,],
			["circle",,,,,		,1,,,,,,200,135,5,"blue",10,],
			["polyline",,,,,	"blue"	,24,,,,,,,,,"blue",1,i=>[200,135,199,120, 200,95,201,120,200,135],(i=>({"rotation":(i+1)/24*360,"cx":200,"cy":135})) ],
		]
	);
	""

	// clock
	RENDER(
		[
			["id","type","coordinates","width","height","fill","count","label"],
			["","rect",POLYPOINTS(12,100,100),	10,10,"red",12,i=>i+1],
			["hour","line",[110,110,110,50],	,,"blue",,],
			["minute","line",[110,110,110,40],	,,"green",,],
			["second","line",[110,110,110,20],	,,"red",,]
		]
	);
	""
	
		
	LINESPLIT([[10,10],[20,20],[40,98]],10)
	PATHSPLIT("M100,100 L34,55 34,56",10)
			
	triangle=POLYPOINTS(3,100,100);
	LINESPLIT(triangle,10)	

	triangle=POLYPOINTS(3,100,100);
	LINESPLIT(triangle,10,true)	
	
	triangle=POLYPOINTS(3,100,100);
	s=LINESPLIT(triangle,10,true)
	lines=[]
	lines=
			(s[0].rowpush(s[1]))
				.concat([s[1].rowpush(s[2])])
				.concat([s[2].rowpush(s[0])])
	lines.m(r=>r.flatten())
	var d=	[
				["type","coordinates","count"],
				["line",lines,lines.length]
			]

	RENDER(d)
	
	
	RENDER(
	   [
		  ["type","size"],
		  ["circle",100],
		  ["circle",200],
		  [],
		  ["type","size","stroke","fill"],
		  ["circle",400,"red",],
		  ["circle",600,"yellow"]
	   ]
	)
	
	MERGEARRAYS([1,2,3],[3,4,5]).print()
	MERGEARRAYS([1,2,3],[3,4,5],[2,4,5]).print()
	
	// 118 for periodic table elements
	SPHERICALPOINTS(118,800)
	HELICALPOINTS(118,800)
	GRID3DPOINTS(118,800,800,2000,5,5,118)
	
	1..100@(x=>RANDINT(4)<+>1)
	
	d="ATCG"
	1..100@(x=>d[RANDINT(4)])
	
	d1="ATCG";
	d2="TAGC";
	1..1000@(function (){var r=RANDINT(4);return([d1[r],d2[r]])}) 
	
	d1="ATCG";
	d2="TAGC";
	c=1..1000@(()=>d1[RANDINT(4)]) ;

	// dna 
	d1="ATCG";
	d2="TAGC";
	c=1..1000@(()=>RANDINT(4)) ;
	dna=[c.map(x=>d1[x]),c.map(x=>d2[x])]

	// rna 
	d1="AUCG";
	c=1..1000@(()=>RANDINT(4)) ;
	rna=[c.map(x=>d1[x])]

	helix1=HELICALPOINTS(118,100);
	SCALEPOINTS(helix1,0.2)
		
	helix1=HELICALPOINTS(118,100);
	SCALEPOINTS(helix1,[0.2,0.4])
	
	
	RENDER(
	[
		["type","cx", "cy", "r","coordinates","label","fill","stroke","stroke-width","font-size","format"],
		["circle",100,100,60,,,"purple","purple"],
		["circle",100,100,30,,,"white","white"],
		["text",,,,[90,65],"1",,"black",3,40],
		["download",,,,[90,65],"1",,"black",3,40,"png"]	
	]);
	""

	Array.prototype.mapto
	points to xy VECTOR2 VECTOR3 VECTOR4 etc.
	pointarray.mapto("XY")
	
	POLYPOINTS(3,10).mapto("XY")
	POLYPOINTS(3,10).mapto("VECTOR3")
	POLYPOINTS(3,10).mapto("xy")
	
	// Array or arrays or array of object manipulations using .mapto or .mapfrom
	// to go from arrays to xy points or other complex objects
	b=POLYPOINTS(3,10).mapto(["abc","def"])	
	b=POLYPOINTS(3,10).mapto("xy")
	b.mapfrom(["x"])
	b.mapfrom(["y"])
	b.mapfrom(["x","y"])
	b.mapfrom("x,y")
	b.mapfrom("x y "," ")
	b.mapfrom("x y"," ")
	b.mapfrom("xabcy",/abc/g)
	
	POLYPOINTS(3,10,null,NULL,TRUE) // shows IsClosed flag for POLYPOINTS and MAKEPOLYGONPOINTS
		.mapto("xy")
		.pieces(2,null,TRUE)		// shows pieces with full length only
	
	["type"	,"name"		,"mass"	].uc()
	["TYPE"	,"NAME"		,"MASS"	].lc()
	["TYPE OF","NAME"		,"MASS"	].mc()
	["TYPE OF","NAME"		,"MASS"	].mc().lc()
	["TYPE OF","NAME"		,"MASS"	].fn(f=>f.length)
	
	["TYPE OF","NAME"		,"MASS"	].fn(CAMELCASE)
	
	// array.fn is a powerful function 
		// .fn("lc") applies el.lc to each
		// .fn("value") applies el["value"] if value is not a function, and is an attribute
		// .fn(fn) applies fn(el) if fn is a function
		// core version was to apply lc etc.
	// fns can be chained on array also
	
	["TYPE OF","NAME"		,"MASS"	]
		.fn(CAMELCASE)
		.fn(INVERTCASE)
		.fn(INVERTCASE)
	
	[
		["TYPE"			, "COLOR", "INTENSITY"],
		["AMBIENTLIGHT",	"RED",	0.6]										
	].lc();
	
	[MONTHS,MONTHS].fn("length")
	[MONTHS,MONTHS].fn(x=>x.length)
	[MONTHS,MONTHS].fn(x=>POWER(x.length,2))
	[MONTHS,MONTHS].fn(x=>SQUARED(x.length))
	[MONTHS,MONTHS].fn(x=>CUBED(x.length))
	[MONTHS,MONTHS].fn(x=>POWERED(4,x.length))
	
	p=XED(5); // creates a function with POWER(x,5) same as POWERED(5,x)
	p(12..200)
	
	p=XED(3);
	p(1..200)
	
	[1,2,"3"].json()
	MS(10).json()
	MONTHS.json()
	
	
	LOADCODEINTOEDITOR("a=23;b=345;a+b")
	
	RENDER3D Examples on Draft
	-https://wiki.zcubes.com/Todo_3D_Parametric to do parametric geometry equations
	
	-docx can be simply dragged and dropped to zcubes now.
		-iframe possibly with alt etc.
		
	-get numbers from a dragged dropped docx
		-Z(5).match(/[0-9]+/g)
	
	PMT(5%,[12,13],1000,10,TRUE)	
	-also works for CHIDIST etc.
	in calci
	
	PMT(5%,[12,13],1000,10,TRUE).o() gives just the output
		input with 
		PMT(5%,[12,13],1000,10,TRUE).input
	
	BARCODE("TEST")
	BARCODE(1..10)
	BARCODE(123,"CODE128")
	BARCODE(123,"EAN")
	BARCODE(123,"code128",{
		  lineColor: "#0aa",
		  width:4,
		  height:40,
		  displayValue: false
		})
	BARCODE(123,"codabar")
	BARCODE(5901234123457,"EAN13")
		// derive from this. note the number of characters etc.
			JsBarcode("#barcode", "5901234123457", {format: "EAN13"});
			JsBarcode("#barcode", "123456789999", {format: "UPC"});
			JsBarcode("#barcode", "96385074", {format: "EAN8"});
			JsBarcode("#barcode", "54495", {format: "EAN5"});
			JsBarcode("#barcode", "53", {format: "EAN2"});
	// from https://github.com/lindell/JsBarcode/
		CODE128
		CODE128 (automatic mode switching)
		CODE128 A/B/C (force mode)
		EAN
		EAN-13
		EAN-8
		EAN-5
		EAN-2
		UPC (A)
		UPC (E)
		CODE39
		ITF
		ITF
		ITF-14
		MSI
		MSI10
		MSI11
		MSI1010
		MSI1110
		Pharmacode
		Codabar
	
	NORMDIST(Num(3),Num(4),Num(5),TRUE,0.000000001)
		-much faster
	
	(1..(100n))!
	(#codesegment1)
		.map(r=>(r.toString()).length)
		// .toString is important for bigint to work
	(#codesegment1)
		.map(r=>(r.toString().match(/0+$/)+"").length)
	
	PILONG(1000)
	PILONG(1000,true)