asymptote: math

 
 8.3 'math'
 ==========
 
 This package extends 'Asymptote''s mathematical capabilities with useful
 functions such as
 
 'void drawline(picture pic=currentpicture, pair P, pair Q, pen p=currentpen);'
      draw the visible portion of the (infinite) line going through 'P'
      and 'Q', without altering the size of picture 'pic', using pen 'p'.
 
 'real intersect(triple P, triple Q, triple n, triple Z);'
      returns the intersection time of the extension of the line segment
      'PQ' with the plane perpendicular to 'n' and passing through 'Z'.
 
 'triple intersectionpoint(triple n0, triple P0, triple n1, triple P1);'
      Return any point on the intersection of the two planes with normals
      'n0' and 'n1' passing through points 'P0' and 'P1', respectively.
      If the planes are parallel, return '(infinity,infinity,infinity)'.
 
 'pair[] quarticroots(real a, real b, real c, real d, real e);'
      returns the four complex roots of the quartic equation
      ax^4+bx^3+cx^2+dx+e=0.
 
 'pair[][] fft(pair[][] a, int sign=1)'
      returns the two-dimensional Fourier transform of a using the given
      'sign'.
 
 'real time(path g, real x, int n=0)'
      returns the 'n'th intersection time of path 'g' with the vertical
      line through x.
 
 'real time(path g, explicit pair z, int n=0)'
      returns the 'n'th intersection time of path 'g' with the horizontal
      line through '(0,z.y)'.
 
 'real value(path g, real x, int n=0)'
      returns the 'n'th 'y' value of 'g' at 'x'.
 
 'real value(path g, explicit pair z, int n=0)'
      returns the 'n'th 'x' value of 'g' at 'y=z.y'.
 
 'real slope(path g, real x, int n=0)'
      returns the 'n'th slope of 'g' at 'x'.
 
 'real slope(path g, explicit pair z, int n=0)'
      returns the 'n'th slope of 'g' at 'y=z.y'.
 
      int[][] segment(bool[] b) returns the indices of consecutive
      true-element segments of bool[] 'b'.
 
 'real[] partialsum(real[] a)'
      returns the partial sums of a real array 'a'.
 
 'real[] partialsum(real[] a, real[] dx)'
      returns the partial 'dx'-weighted sums of a real array 'a'.
 
 'bool increasing(real[] a, bool strict=false)'
      returns, if 'strict=false', whether 'i > j' implies 'a[i] >= a[j]',
      or if 'strict=true', whether 'i > j' implies implies 'a[i] > a[j]'.
 
 'int unique(real[] a, real x)'
      if the sorted array 'a' does not contain 'x', insert it
      sequentially, returning the index of 'x' in the resulting array.
 
 'bool lexorder(pair a, pair b)'
      returns the strict lexicographical partial order of 'a' and 'b'.
 
 'bool lexorder(triple a, triple b)'
      returns the strict lexicographical partial order of 'a' and 'b'.