The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Copyright 2010, 2011, 2012 Kevin Ryde

This file is part of Math-PlanePath.

Math-PlanePath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

Math-PlanePath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License along
with Math-PlanePath.  If not, see <http://www.gnu.org/licenses/>.



Version 89, September 2012
    - RationalsTree new tree_type=L

Version 88, September 2012
    - new DekkingCurve, DekkingCentres
    - new tree_n_to_depth()
    - PlanePathCoord new coordinate_type Depth
    - DiamondSpiral new "n_start" parameter

Version 87, August 2012
    - new tree_n_num_children()
    - PlanePathCoord new coordinate_type NumChildren
    - SierpinskiArrowhead,SierpinskiArrowheadCentres new parameter
      align=right,left,diagonal
    - Rows,Columns new "n_start" parameter
    - KnightSpiral,PentSpiral,SierpinskiCurve fixes for n_to_xy() on
      some fractional N

Version 86, August 2012
    - Diagonals,DiagonalsOctant,DiagonalsAlternating,PyramidRows,PyramidSides,
      Corner new "n_start" parameter

Version 85, August 2012
    - SquareSpiral new "n_start" parameter
    - PlanePathDelta new delta_type=>"AbsdX","AbsdY"

Version 84, August 2012
    - PyramidRows new "align" parameter

Version 83, July 2012
    - new n_to_dxdy()
    - SierpinskiTriangle new parameter align=right,left,diagonal
    - SierpinskiTriangle,TriangleSpiral,TriangleSpiralSkewed,Hypot new
      "n_start" parameter
    - PlanePathDelta new delta_type=>"dDiffYX"
    - PlanePathN new line_type=>"Diagonal_NW","Diagonal_SW","Diagonal_SE"
    - Math::PlanePath::Base::Digits new digit_join_lowtohigh()
    - new Math::PlanePath::Base::Generic round_nearest()

Version 82, July 2012
    - new tree_n_children(), tree_n_parent()
    - PlanePathDelta new delta_type=>"dDiffXY"
    - ImaginaryBase,ImaginaryHalf rect_to_n_range() exact
    - new Math::PlanePath::Base::Digits round_down_pow(),
      digit_split_lowtohigh(), parameter_info_array(), parameter_info_radix2()

Version 81, July 2012
    - TriangularHypot new points=hex,hex_rotated,hex_centred

Version 80, July 2012
    - new AlternatePaperMidpoint
    - AlternatePaper new "arms"
    - GreekKeySpiral new "turns"
    - ComplexPlus, Flowsnake, FlowsnakeCentres, TerdragonMidpoint,
      TerdragonRounded, R5DragonMidpoint fix for arms>1 fractional N

Version 79, June 2012
    - TriangularHypot new option points=odd,even

Version 78, June 2012
    - new WythoffArray, PowerArray
    - GcdRationals new option pairs_order
    - Hypot,HypotOctant new option points=odd,even
    - Diagonals new options direction=up,down

Version 77, June 2012
    - new DiagonalsOctant

Version 76, May 2012
    - tests allow for as_float() only in recent Math::BigRat

Version 75, May 2012
    - new CubicBase, CCurve, R5DragonCurve, R5DragonMidpoint, TerdragonRounded
    - MultipleRings new ring_shape=>"polygon"
    - PlanePathDelta new delta_type=>"dSum"
    - fix TheodorusSpiral n_to_rsquared() on fractional N

Version 74, May 2012
    - new ImaginaryBase
    - new method n_to_rsquared()
    - PlanePathN new line_type X_neg,Y_neg
    - fix ImaginaryBase xy_to_n() possible infloop on floating point rounding
    - fix TerdragonMidpoint xy_to_n() undef on points outside requested arms

Version 73, April 2012
    - new GrayCode, SierpinskiCurveStair, WunderlichSerpentine
    - fix GcdRationals xy_to_n() on BigInt
    - PlanePathCoord new coordinate_type SumAbs,TRadius,TRSquared

Version 72, March 2012
    - PlanePathTurn new turn_type "Right"

Version 71, February 2012
    - new FilledRings
    - misc fixes for Math::NumSeq::PlanePathCoord etc values_min etc

Version 70, February 2012
    - TheodorusSpiral fix n_to_xy() position saving
    - StaircaseAlternating new end_type=>"square"

Version 69, February 2012
    - new Math::NumSeq::PlanePathTurn
    - Math::NumSeq::PlanePathN new pred()

Version 68, February 2012
    - new xy_to_n_list()
    - new CretanLabyrinth

Version 67, February 2012
    - oops, DragonMidpoint,DragonRounded xy_to_n() exclude points on the
      arm one past what was requested
    - new CellularRule57

Version 66, February 2012
    - new TerdragonMidpoint
    - DragonCurve,DragonMidpoint,DragonRounded,TerdragonCurve faster xy_to_n()

Version 65, January 2012
    - new parameter_info_hash(), n_frac_discontinuity()

Version 64, January 2012
    - new AnvilSpiral, AlternatePaper, ComplexPlus, TerdragonCurve

Version 63, January 2012
    - new class_x_negative() and class_y_negative() methods
    - new CellularRule, ComplexRevolving, Math::NumSeq::PlanePathN
    - Math::NumSeq::PlanePathCoord etc new planepath_object option

Version 62, December 2011
    - new FractionsTree

Version 61, December 2011
    - new FactorRationals

Version 60, December 2011
    - new GcdRationals

Version 59, December 2011
    - new AR2W2Curve

Version 58, December 2011
    - new DiagonalRationals, StaircaseAlternating,
      Math::NumSeq::PlanePathDelta

Version 57, December 2011
    - new HilbertSpiral
    - LTiling new L_fill "left" and "upper"

Version 56, December 2011
    - new CincoCurve, DiagonalsAlternating, LTiling

Version 55, November 2011
    - new KochelCurve, MPeaks
    - Flowsnake,QuintetCurve faster xy_to_n()

Version 54, November 2011
    - new WunderlichMeander
    - PlanePathCoord new coordinate_type Product,DiffXY,DiffYX,AbsDiff
    - BetaOmega,CellularRule190 exact rect_to_n_range()

Version 53, November 2011
    - new FibonacciWordFractal, Math::NumSeq::PlanePathCoord

Version 52, November 2011
    - new BetaOmega, CornerReplicate, DigitGroups, HIndexing

Version 51, October 2011
    - new CellularRule190

Version 50, October 2011
    - DragonRounded fix xy_to_n() with arms=2,3,4 on innermost XY=0,1
    - SierpinskiCurve fixes for rect_to_n_range()

Version 49, October 2011
    - new AztecDiamondRings, DivisibleColumns, SierpinskiCurve,
      UlamWarburtonQuarter
    - SierpinskiArrowheadCentres fix for n_to_xy() on fractional $n

Version 48, October 2011
    - new UlamWarburton

Version 47, October 2011
    - new SquareReplicate

Version 46, September 2011
    - new GosperReplicate

Version 45, September 2011
    - new QuintetCurve, QuintetCentres, QuintetReplicate

Version 44, September 2011
    - new ComplexMinus
    - RationalsTree new tree_type=Drib
    - Corner new wider parameter

Version 43, September 2011
    - new KochSquareflakes, RationalsTree
    - new parameter_info_array(), parameter_info_list()

Version 42, September 2011
    - new SierpinskiArrowheadCentres, SierpinskiTriangle

Version 41, August 2011
    - new QuadricCurve, QuadricIslands, ImaginaryBase

Version 40, August 2011
    - new DragonRounded, CellularRule54
    - new arms_count() method
    - Flowsnake, FlowsnakeCentres new "arms" parameter

Version 39, August 2011
    - new DragonCurve, DragonMidpoint

Version 38, August 2011
    - new Flowsnake, FlowsnakeCentres

Version 37, July 2011
    - new SquareArms, DiamondArms, File

Version 36, July 2011
    - new HexArms
    - PeanoCurve new radix parameter

Version 35, July 2011
    - new GosperSide
    - fixes for experimental BigFloat support

Version 34, July 2011
    - ZOrderCurve new radix parameter

Version 33, July 2011
    - new GosperIslands

Version 32, June 2011
    - new SierpinskiArrowhead, CoprimeColumns

Version 31, June 2011
    - KochCurve fix for fractional N

Version 31, June 2011
    - PythagoreanTree avoid dubious hypot() on darwin 8.11.0

Version 30, May 2011
    - new TriangularHypot, KochCurve, KochPeaks, KochSnowflakes

Version 29, May 2011
    - GreekKeySpiral rect_to_n_range() tighter $n_lo
    - tests more diagnostics on PythagoreanTree

Version 28, May 2011
    - PixelRings xy_to_n() fix some X==Y points should be undef

Version 27, May 2011
    - new GreekKeySpiral

Version 26, May 2011
    - new PythagoreanTree
    - Rows,Columns more care against width<=0 or height<=0

Version 25, May 2011
    - tests fix neg zero for long double NV

Version 24, May 2011
    - tests fix OEIS file comparisons
    - MultipleRings xy_to_n() fix for x=-0,y=0

Version 23, April 2011
    - new ArchimedeanChords
    - TheodorusSpiral rect_to_n_range() tighter $n_lo

Version 22, March 2011
    - new n_start() method
    - SacksSpiral rect_to_n_range() include N=0

Version 21, February 2011
    - new Hypot, HypotOctant, OctagramSpiral
    - TheodorusSpiral, VogelFloret allow for xy_to_n() result bigger than IV
      (though that big is probably extremely slow)

Version 20, February 2011
    - fix Makefile.PL for perl 5.6.0
    - tests avoid stringized "-0" from perl 5.6.x

Version 19, January 2011
    - new PixelRings

Version 18, January 2011
    - avoid some 5.12 warnings on infs

Version 17, January 2011
    - avoid some inf loops and div by zeros for n=infinity or x,y=infinity
      (handling of infinity is unspecified, but at least don't hang)
    - PyramidRows, PyramidSides exact rect_to_n_range()

Version 16, January 2011
    - new PeanoCurve, Staircase

Version 15, January 2011
    - MultipleRings fix xy_to_n() and rect_to_n_range() at 0,0
    - Corners,Diagonals,MultipleRings tighter rect_to_n_range()

Version 14, December 2010
    - HilbertCurve exact rect_to_n_range()

Version 13, December 2010
    - new HilbertCurve, ZOrderCurve

Version 12, October 2010
    - oops, VogelFloret botched rect_to_n_range()

Version 11, October 2010
    - VogelFloret new rotation and radius parameters
    - SacksSpiral,VogelFloret tighter rect_to_n_range() when away from origin

Version 10, October 2010
    - fix MultipleRings xy_to_n()

Version 9, September 2010
    - HexSpiral and HexSpiralSkewed new "wider" parameter

Version 8, September 2010
    - tests fix stray 5.010 should be just 5.004

Version 7, August 2010
    - new MultipleRings
    - VogelFloret xy_to_n() fix for positions away from exact N
    - Rows, Columns rect_to_n_range() tighter

Version 6, August 2010
    - new TheodorusSpiral

Version 5, July 2010
    - SquareSpiral new "wider" parameter

Version 4, July 2010
    - new PentSpiral, HeptSpiralSkewed
    - PyramidRows "step" parameter

Version 3, July 2010
    - new PyramidSpiral, TriangleSpiral, TriangleSpiralSkewed, PentSpiralSkewed

Version 2, July 2010
    - in Diagonals don't negative sqrt() if n=0

Version 1, July 2010
    - the first version