package Ġhm . b ink ley . math Ċ Ċ import Ġjava . util . Objects . hash Ċ Ċ public Ġinterface ĠBig Rational Range < T Ġ: ĠBig Rational Base < T >> Ġ: ĊĠĠĠ ĠIterable < T >, ĠClosed Range < T > Ċ Ċ private Ġsealed Ġclass ĠBig Rational Iterator < T Ġ: ĠBig Rational Base < T >>( ĊĠĠĠ Ġ_ current : ĠT , ĊĠĠĠ Ġprotected Ġval Ġlast : ĠT , ĊĠĠĠ Ġprivate Ġval Ġstep : ĠT , Ċ ) Ġ: ĠIterator < T > Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ current . comp anion . iterator Check (_ current , Ġlast , Ġstep ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSome Ġho op - jump ing Ġto Ġmake ĠJ a Co Co Ġhapp ier Ġ*/ ĊĠĠĠ Ġprotected Ġvar Ġcurrent : ĠT Ġ= Ġ_ current ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġcurrent ĊĠĠĠĠĠĠĠ Ġcurrent Ġ+= Ġstep ĊĠĠĠĠĠĠĠ Ġreturn Ġnext ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠIncrement ing Big Rational Iterator < T Ġ: ĠBig Rational Base < T >>( ĊĠĠĠ Ġ/** ĠThe Ġfirst Ġelement Ġin Ġthe Ġprogress ion . Ġ*/ ĊĠĠĠ Ġfirst : ĠT , ĊĠĠĠ Ġ/** ĠThe Ġlast Ġelement Ġin Ġthe Ġprogress ion . Ġ*/ ĊĠĠĠ Ġlast : ĠT , ĊĠĠĠ Ġstep : ĠT , Ċ ) Ġ: ĠBig Rational Iterator < T >( first , Ġlast , Ġstep ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ> Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Step Ġmust Ġadvance Ġrange Ġto Ġavoid Ġoverflow .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġcurrent Ġ<= Ġlast Ċ } Ċ Ċ private Ġclass ĠDec rement ing Big Rational Iterator < T Ġ: ĠBig Rational Base < T >>( ĊĠĠĠ Ġ/** ĠThe Ġfirst Ġelement Ġin Ġthe Ġprogress ion . Ġ*/ ĊĠĠĠ Ġfirst : ĠT , ĊĠĠĠ Ġ/** ĠThe Ġlast Ġelement Ġin Ġthe Ġprogress ion . Ġ*/ ĊĠĠĠ Ġlast : ĠT , ĊĠĠĠ Ġstep : ĠT , Ċ ) Ġ: ĠBig Rational Iterator < T >( first , Ġlast , Ġstep ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( first Ġ< Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Step Ġmust Ġadvance Ġrange Ġto Ġavoid Ġoverflow .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next () Ġ= Ġcurrent Ġ>= Ġlast Ċ } Ċ Ċ private Ġclass ĠBig Rational Progress ion < T Ġ: ĠBig Rational Base < T >>( ĊĠĠĠ Ġoverride Ġval Ġstart : ĠT , ĊĠĠĠ Ġoverride Ġval Ġend Inclusive : ĠT , ĊĠĠĠ Ġprivate Ġval Ġstep : ĠT , Ċ ) Ġ: ĠBig Rational Range < T > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġiterator () Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( start . comp anion . ZERO Ġ> Ġstep ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDec rement ing Big Rational Iterator ( start , Ġend Inclusive , Ġstep ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIncrement ing Big Rational Iterator ( start , Ġend Inclusive , Ġstep ) ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= Ġthis Ġ=== Ġother Ġ|| ĊĠĠĠĠĠĠĠ Ġother Ġis ĠBig Rational Progress ion < *> Ġ&& ĊĠĠĠĠĠĠĠ Ġjava Class Ġ== Ġother . java Class Ġ&& ĊĠĠĠĠĠĠĠ Ġstart Ġ== Ġother . start Ġ&& ĊĠĠĠĠĠĠĠ Ġend Inclusive Ġ== Ġother . end Inclusive Ġ&& ĊĠĠĠĠĠĠĠ Ġstep Ġ== Ġother . step ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġhash ( java Class , Ġstart , Ġend Inclusive , Ġstep ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( start . comp anion . ZERO Ġ<= Ġstep ) Ġ"$ start .. $ end Inclusive Ġstep Ġ$ step " ĊĠĠĠĠĠĠĠ Ġelse Ġ"$ start Ġdown To Ġ$ end Inclusive Ġstep Ġ$ step " Ċ } Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . range To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ ĠBig Rational Progress ion ( this , Ġend Inclusive , Ġcompanion . ONE ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . range To ( ĊĠĠĠ Ġend Inclusive : ĠB Double , Ċ ): ĠBig Rational Range < T > Ġ= Ġthis .. comp anion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠB Double . range To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) .. end Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . range To ( ĊĠĠĠ Ġend Inclusive : ĠDouble , Ċ ): ĠBig Rational Range < T > Ġ= Ġthis .. comp anion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠDouble . range To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) .. end Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . range To ( ĊĠĠĠ Ġend Inclusive : ĠFloat , Ċ ): ĠBig Rational Range < T > Ġ= Ġthis .. comp anion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠFloat . range To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) .. end Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . range To ( ĊĠĠĠ Ġend Inclusive : ĠB Int , Ċ ): ĠBig Rational Range < T > Ġ= Ġthis .. comp anion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠB Int . range To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) .. end Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . range To ( ĊĠĠĠ Ġend Inclusive : ĠLong , Ċ ): ĠBig Rational Range < T > Ġ= Ġthis .. comp anion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠLong . range To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) .. end Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . range To ( ĊĠĠĠ Ġend Inclusive : ĠInt , Ċ ): ĠBig Rational Range < T > Ġ= Ġthis .. comp anion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġoperator Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠInt . range To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) .. end Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . down To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ ĠBig Rational Progress ion ( this , Ġend Inclusive , Ġ- comp anion . ONE ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . down To ( ĊĠĠĠ Ġend Inclusive : ĠB Double , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġthis Ġdown To Ġcompanion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠB Double . down To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) Ġdown To Ġend Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . down To ( ĊĠĠĠ Ġend Inclusive : ĠDouble , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġthis Ġdown To Ġcompanion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠDouble . down To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) Ġdown To Ġend Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . down To ( ĊĠĠĠ Ġend Inclusive : ĠFloat , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġthis Ġdown To Ġcompanion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠFloat . down To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) Ġdown To Ġend Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . down To ( ĊĠĠĠ Ġend Inclusive : ĠB Int , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġthis Ġdown To Ġcompanion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠB Int . down To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) Ġdown To Ġend Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . down To ( ĊĠĠĠ Ġend Inclusive : ĠLong , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġthis Ġdown To Ġcompanion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠLong . down To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) Ġdown To Ġend Inclusive Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠT . down To ( ĊĠĠĠ Ġend Inclusive : ĠInt , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġthis Ġdown To Ġcompanion . valueOf ( end Inclusive ) Ċ Ċ /** ĠCreates Ġa Ġrange Ġfrom Ġthis Ġvalue Ġ_ down _ Ġto Ġ[ end Inclusive ]. Ġ*/ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠInt . down To ( ĊĠĠĠ Ġend Inclusive : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ Ġend Inclusive . comp anion . valueOf ( this ) Ġdown To Ġend Inclusive Ċ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠBig Rational Range < T >. step ( ĊĠĠĠ Ġstep : ĠT , Ċ ): ĠBig Rational Range < T > Ġ= ĠBig Rational Progress ion ( start , Ġend Inclusive , Ġstep ) Ċ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠBig Rational Range < T >. step ( ĊĠĠĠ Ġstep : ĠB Double , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ ĠBig Rational Progress ion ( start , Ġend Inclusive , Ġstart . comp anion . valueOf ( step )) Ċ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠBig Rational Range < T >. step ( ĊĠĠĠ Ġstep : ĠDouble , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ ĠBig Rational Progress ion ( start , Ġend Inclusive , Ġstart . comp anion . valueOf ( step )) Ċ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠBig Rational Range < T >. step ( ĊĠĠĠ Ġstep : ĠFloat , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ ĠBig Rational Progress ion ( start , Ġend Inclusive , Ġstart . comp anion . valueOf ( step )) Ċ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠBig Rational Range < T >. step ( ĊĠĠĠ Ġstep : ĠB Int , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ ĠBig Rational Progress ion ( start , Ġend Inclusive , Ġstart . comp anion . valueOf ( step )) Ċ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠBig Rational Range < T >. step ( ĊĠĠĠ Ġstep : ĠLong , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ ĠBig Rational Progress ion ( start , Ġend Inclusive , Ġstart . comp anion . valueOf ( step )) Ċ Ċ public Ġin fix Ġfun Ġ< T Ġ: ĠBig Rational Base < T >> ĠBig Rational Range < T >. step ( ĊĠĠĠ Ġstep : ĠInt , Ċ ): ĠBig Rational Range < T > Ġ= ĊĠĠĠ ĠBig Rational Progress ion ( start , Ġend Inclusive , Ġstart . comp anion . valueOf ( step )) Ċ