codesimian
Class Sin

java.lang.Object
  extended by codesimian.CS
      extended by codesimian.DefaultCS
          extended by codesimian.Sin
All Implemented Interfaces:
CodeSimian, java.io.Serializable

public class Sin
extends DefaultCS

See Also:
Serialized Form

Field Summary
 
Fields inherited from class codesimian.CS
DESCRIPTION, END, EXECPROXY, FUEL, HEAP, JAVACODE, MYFUEL, NAME, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER
 
Constructor Summary
Sin()
           
 
Method Summary
 double cost()
          cost() should be changed to return a float, and should be renamed to costToExecute()

cost of EXECUTING this CS, not including any CSs it executes recursively.
 double DForProxy()
          Execute this CS and cast to double.
static double fastApproximateCos(double angle)
          cosine
static double fastApproximateSin(double angle)
          Uses a linear interpolation between 2 values in a table of precomputed sines.
static double fastApproximateTan(double angle)
          tangent.
 java.lang.String keyword()
          For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
 double maxD()
          sine ranges from -1 to 1
 double minD()
          sine ranges from -1 to 1
static double[] sinTable(int arraySize, double circleFraction)
          Returns a new table containing values of sine for many angles.
static double[] staticSinTable(int arraySize, double circleFraction)
          Creates a new static sine table for Sin.java and sets other variables related to it
 
Methods inherited from class codesimian.DefaultCS
B, C, countP, decrementMyFuel, deleteP, description, F, fuel, getExec, getObject, heap, I, indexP, indexPName, insertB, insertC, insertD, insertF, insertI, insertJ, insertL, insertL, insertL1, insertP, insertS, insertZ, J, javaCode, LForProxy, LForProxy, minP, myFuel, name, newInstance, objectToCS, objectToCSArray, objectToCSArray, P, prevD, prevL, PType, S, setB, setC, setCountP, setD, setD, setExec, setF, setFuel, setI, setJ, setL, setL, setL, setL1, setMyFuel, setName, setObject, setP, setPrevExec, setS, setZ, start, toString, V, Z
 
Methods inherited from class codesimian.CS
addP, addP, addP, addP, addP, BForProxy, CForProxy, clone, D, deleteP, FForProxy, IForProxy, isIllusion, JForProxy, L, L, L, L, L, maxP, overwrites, parent, parsePriority, PB, PC, PD, PF, PI, PJ, PL, prevB, prevC, prevF, prevI, prevJ, prevS, prevZ, proxyOf, PS, PZ, reflect, reflect, setB, setC, setCost, setDescription, setF, setHeap, setI, setJ, setL, setL, setParent, setParsePriority, setProxyOf, setPType, setS, setTester, setZ, SForProxy, tester, VForProxy, voidReflect, ZForProxy
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Sin

public Sin()
Method Detail

keyword

public java.lang.String keyword()
Description copied from class: DefaultCS
For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
Default: Returns class name, minus package name (and its dots), and change the first letter to lowercase.

For example, CS.MaxParams does not override keyword(), which returns "maxP".

Overrides:
keyword in class DefaultCS
See Also:
CS.parent(), CS.newInstance(), CS.name()

DForProxy

public double DForProxy()
Description copied from class: CS
Execute this CS and cast to double. D() is the main EXECUTE function. D() uses DForProxy(). DForProxy() is the main action of every CS, the most important function. By default, all other primitive EXECUTE functions defer to D.
Functions that EXECUTE this CS: L(Class) L(int,Class,int) Z() B() C() S() I() J() F() D() V()

Specified by:
DForProxy in class DefaultCS

cost

public double cost()
Description copied from class: CS
cost() should be changed to return a float, and should be renamed to costToExecute()

cost of EXECUTING this CS, not including any CSs it executes recursively. The INTERNAL cost.

One unit of myFuel() costs cost() units of fuel().

Returns 1 by default.

Overrides:
cost in class CS

minD

public double minD()
sine ranges from -1 to 1

Overrides:
minD in class CS

maxD

public double maxD()
sine ranges from -1 to 1

Overrides:
maxD in class CS

fastApproximateSin

public static double fastApproximateSin(double angle)
Uses a linear interpolation between 2 values in a table of precomputed sines. Faster than Math.sin(double). Doubles take twice as long to use, and that function probably goes through many cycles of multiplying doubles to converge on the answer. == and < are faster than multiplies.


fastApproximateCos

public static final double fastApproximateCos(double angle)
cosine


fastApproximateTan

public static final double fastApproximateTan(double angle)
tangent. Instead of returning infinity (at 90 and 270 degrees), returns 0.


staticSinTable

public static double[] staticSinTable(int arraySize,
                                      double circleFraction)
Creates a new static sine table for Sin.java and sets other variables related to it


sinTable

public static double[] sinTable(int arraySize,
                                double circleFraction)
Returns a new table containing values of sine for many angles. The first index is sine(0). The last is sine(2*pi*circleFraction)

Parameters:
arraySize - size of returned double array
circleFraction - range 0-1. the fraction of sine values (range of approximate values) to return. A sine graph has 3 lines of symmetry. As little as 1/8 of all sine values can be used to calculate any sine.