All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.pqc.crypto.falcon.FPREngine Maven / Gradle / Ivy

Go to download

The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for Java 1.8 and later with debug enabled.

The newest version!
package org.bouncycastle.pqc.crypto.falcon;

class FPREngine
{
    private static final FalconFPR[] inv_sigma;
    private static final FalconFPR[] sigma_min;
    private static final FalconFPR[] gm_tab;
    private static final FalconFPR[] p2_tab;

    static
    {
        inv_sigma = new FalconFPR[]{
            new FalconFPR(0.0), /* unused */
            new FalconFPR(0.0069054793295940891952143765991630516),
            new FalconFPR(0.0068102267767177975961393730687908629),
            new FalconFPR(0.0067188101910722710707826117910434131),
            new FalconFPR(0.0065883354370073665545865037227681924),
            new FalconFPR(0.0064651781207602900738053897763485516),
            new FalconFPR(0.0063486788828078995327741182928037856),
            new FalconFPR(0.0062382586529084374473367528433697537),
            new FalconFPR(0.0061334065020930261548984001431770281),
            new FalconFPR(0.0060336696681577241031668062510953022),
            new FalconFPR(0.0059386453095331159950250124336477482)
        };

        sigma_min = new FalconFPR[]{
            new FalconFPR(0.0), /* unused */
            new FalconFPR(1.1165085072329102588881898380334015),
            new FalconFPR(1.1321247692325272405718031785357108),
            new FalconFPR(1.1475285353733668684571123112513188),
            new FalconFPR(1.1702540788534828939713084716509250),
            new FalconFPR(1.1925466358390344011122170489094133),
            new FalconFPR(1.2144300507766139921088487776957699),
            new FalconFPR(1.2359260567719808790104525941706723),
            new FalconFPR(1.2570545284063214162779743112075080),
            new FalconFPR(1.2778336969128335860256340575729042),
            new FalconFPR(1.2982803343442918539708792538826807)
        };
        gm_tab = new FalconFPR[]{
            new FalconFPR(0), new FalconFPR(0), /* unused */
            new FalconFPR(-0.000000000000000000000000000), new FalconFPR(1.000000000000000000000000000),
            new FalconFPR(0.707106781186547524400844362), new FalconFPR(0.707106781186547524400844362),
            new FalconFPR(-0.707106781186547524400844362), new FalconFPR(0.707106781186547524400844362),
            new FalconFPR(0.923879532511286756128183189), new FalconFPR(0.382683432365089771728459984),
            new FalconFPR(-0.382683432365089771728459984), new FalconFPR(0.923879532511286756128183189),
            new FalconFPR(0.382683432365089771728459984), new FalconFPR(0.923879532511286756128183189),
            new FalconFPR(-0.923879532511286756128183189), new FalconFPR(0.382683432365089771728459984),
            new FalconFPR(0.980785280403230449126182236), new FalconFPR(0.195090322016128267848284868),
            new FalconFPR(-0.195090322016128267848284868), new FalconFPR(0.980785280403230449126182236),
            new FalconFPR(0.555570233019602224742830814), new FalconFPR(0.831469612302545237078788378),
            new FalconFPR(-0.831469612302545237078788378), new FalconFPR(0.555570233019602224742830814),
            new FalconFPR(0.831469612302545237078788378), new FalconFPR(0.555570233019602224742830814),
            new FalconFPR(-0.555570233019602224742830814), new FalconFPR(0.831469612302545237078788378),
            new FalconFPR(0.195090322016128267848284868), new FalconFPR(0.980785280403230449126182236),
            new FalconFPR(-0.980785280403230449126182236), new FalconFPR(0.195090322016128267848284868),
            new FalconFPR(0.995184726672196886244836953), new FalconFPR(0.098017140329560601994195564),
            new FalconFPR(-0.098017140329560601994195564), new FalconFPR(0.995184726672196886244836953),
            new FalconFPR(0.634393284163645498215171613), new FalconFPR(0.773010453362736960810906610),
            new FalconFPR(-0.773010453362736960810906610), new FalconFPR(0.634393284163645498215171613),
            new FalconFPR(0.881921264348355029712756864), new FalconFPR(0.471396736825997648556387626),
            new FalconFPR(-0.471396736825997648556387626), new FalconFPR(0.881921264348355029712756864),
            new FalconFPR(0.290284677254462367636192376), new FalconFPR(0.956940335732208864935797887),
            new FalconFPR(-0.956940335732208864935797887), new FalconFPR(0.290284677254462367636192376),
            new FalconFPR(0.956940335732208864935797887), new FalconFPR(0.290284677254462367636192376),
            new FalconFPR(-0.290284677254462367636192376), new FalconFPR(0.956940335732208864935797887),
            new FalconFPR(0.471396736825997648556387626), new FalconFPR(0.881921264348355029712756864),
            new FalconFPR(-0.881921264348355029712756864), new FalconFPR(0.471396736825997648556387626),
            new FalconFPR(0.773010453362736960810906610), new FalconFPR(0.634393284163645498215171613),
            new FalconFPR(-0.634393284163645498215171613), new FalconFPR(0.773010453362736960810906610),
            new FalconFPR(0.098017140329560601994195564), new FalconFPR(0.995184726672196886244836953),
            new FalconFPR(-0.995184726672196886244836953), new FalconFPR(0.098017140329560601994195564),
            new FalconFPR(0.998795456205172392714771605), new FalconFPR(0.049067674327418014254954977),
            new FalconFPR(-0.049067674327418014254954977), new FalconFPR(0.998795456205172392714771605),
            new FalconFPR(0.671558954847018400625376850), new FalconFPR(0.740951125354959091175616897),
            new FalconFPR(-0.740951125354959091175616897), new FalconFPR(0.671558954847018400625376850),
            new FalconFPR(0.903989293123443331586200297), new FalconFPR(0.427555093430282094320966857),
            new FalconFPR(-0.427555093430282094320966857), new FalconFPR(0.903989293123443331586200297),
            new FalconFPR(0.336889853392220050689253213), new FalconFPR(0.941544065183020778412509403),
            new FalconFPR(-0.941544065183020778412509403), new FalconFPR(0.336889853392220050689253213),
            new FalconFPR(0.970031253194543992603984207), new FalconFPR(0.242980179903263889948274162),
            new FalconFPR(-0.242980179903263889948274162), new FalconFPR(0.970031253194543992603984207),
            new FalconFPR(0.514102744193221726593693839), new FalconFPR(0.857728610000272069902269984),
            new FalconFPR(-0.857728610000272069902269984), new FalconFPR(0.514102744193221726593693839),
            new FalconFPR(0.803207531480644909806676513), new FalconFPR(0.595699304492433343467036529),
            new FalconFPR(-0.595699304492433343467036529), new FalconFPR(0.803207531480644909806676513),
            new FalconFPR(0.146730474455361751658850130), new FalconFPR(0.989176509964780973451673738),
            new FalconFPR(-0.989176509964780973451673738), new FalconFPR(0.146730474455361751658850130),
            new FalconFPR(0.989176509964780973451673738), new FalconFPR(0.146730474455361751658850130),
            new FalconFPR(-0.146730474455361751658850130), new FalconFPR(0.989176509964780973451673738),
            new FalconFPR(0.595699304492433343467036529), new FalconFPR(0.803207531480644909806676513),
            new FalconFPR(-0.803207531480644909806676513), new FalconFPR(0.595699304492433343467036529),
            new FalconFPR(0.857728610000272069902269984), new FalconFPR(0.514102744193221726593693839),
            new FalconFPR(-0.514102744193221726593693839), new FalconFPR(0.857728610000272069902269984),
            new FalconFPR(0.242980179903263889948274162), new FalconFPR(0.970031253194543992603984207),
            new FalconFPR(-0.970031253194543992603984207), new FalconFPR(0.242980179903263889948274162),
            new FalconFPR(0.941544065183020778412509403), new FalconFPR(0.336889853392220050689253213),
            new FalconFPR(-0.336889853392220050689253213), new FalconFPR(0.941544065183020778412509403),
            new FalconFPR(0.427555093430282094320966857), new FalconFPR(0.903989293123443331586200297),
            new FalconFPR(-0.903989293123443331586200297), new FalconFPR(0.427555093430282094320966857),
            new FalconFPR(0.740951125354959091175616897), new FalconFPR(0.671558954847018400625376850),
            new FalconFPR(-0.671558954847018400625376850), new FalconFPR(0.740951125354959091175616897),
            new FalconFPR(0.049067674327418014254954977), new FalconFPR(0.998795456205172392714771605),
            new FalconFPR(-0.998795456205172392714771605), new FalconFPR(0.049067674327418014254954977),
            new FalconFPR(0.999698818696204220115765650), new FalconFPR(0.024541228522912288031734529),
            new FalconFPR(-0.024541228522912288031734529), new FalconFPR(0.999698818696204220115765650),
            new FalconFPR(0.689540544737066924616730630), new FalconFPR(0.724247082951466920941069243),
            new FalconFPR(-0.724247082951466920941069243), new FalconFPR(0.689540544737066924616730630),
            new FalconFPR(0.914209755703530654635014829), new FalconFPR(0.405241314004989870908481306),
            new FalconFPR(-0.405241314004989870908481306), new FalconFPR(0.914209755703530654635014829),
            new FalconFPR(0.359895036534988148775104572), new FalconFPR(0.932992798834738887711660256),
            new FalconFPR(-0.932992798834738887711660256), new FalconFPR(0.359895036534988148775104572),
            new FalconFPR(0.975702130038528544460395766), new FalconFPR(0.219101240156869797227737547),
            new FalconFPR(-0.219101240156869797227737547), new FalconFPR(0.975702130038528544460395766),
            new FalconFPR(0.534997619887097210663076905), new FalconFPR(0.844853565249707073259571205),
            new FalconFPR(-0.844853565249707073259571205), new FalconFPR(0.534997619887097210663076905),
            new FalconFPR(0.817584813151583696504920884), new FalconFPR(0.575808191417845300745972454),
            new FalconFPR(-0.575808191417845300745972454), new FalconFPR(0.817584813151583696504920884),
            new FalconFPR(0.170961888760301226363642357), new FalconFPR(0.985277642388941244774018433),
            new FalconFPR(-0.985277642388941244774018433), new FalconFPR(0.170961888760301226363642357),
            new FalconFPR(0.992479534598709998156767252), new FalconFPR(0.122410675199216198498704474),
            new FalconFPR(-0.122410675199216198498704474), new FalconFPR(0.992479534598709998156767252),
            new FalconFPR(0.615231590580626845484913563), new FalconFPR(0.788346427626606262009164705),
            new FalconFPR(-0.788346427626606262009164705), new FalconFPR(0.615231590580626845484913563),
            new FalconFPR(0.870086991108711418652292404), new FalconFPR(0.492898192229784036873026689),
            new FalconFPR(-0.492898192229784036873026689), new FalconFPR(0.870086991108711418652292404),
            new FalconFPR(0.266712757474898386325286515), new FalconFPR(0.963776065795439866686464356),
            new FalconFPR(-0.963776065795439866686464356), new FalconFPR(0.266712757474898386325286515),
            new FalconFPR(0.949528180593036667195936074), new FalconFPR(0.313681740398891476656478846),
            new FalconFPR(-0.313681740398891476656478846), new FalconFPR(0.949528180593036667195936074),
            new FalconFPR(0.449611329654606600046294579), new FalconFPR(0.893224301195515320342416447),
            new FalconFPR(-0.893224301195515320342416447), new FalconFPR(0.449611329654606600046294579),
            new FalconFPR(0.757208846506484547575464054), new FalconFPR(0.653172842953776764084203014),
            new FalconFPR(-0.653172842953776764084203014), new FalconFPR(0.757208846506484547575464054),
            new FalconFPR(0.073564563599667423529465622), new FalconFPR(0.997290456678690216135597140),
            new FalconFPR(-0.997290456678690216135597140), new FalconFPR(0.073564563599667423529465622),
            new FalconFPR(0.997290456678690216135597140), new FalconFPR(0.073564563599667423529465622),
            new FalconFPR(-0.073564563599667423529465622), new FalconFPR(0.997290456678690216135597140),
            new FalconFPR(0.653172842953776764084203014), new FalconFPR(0.757208846506484547575464054),
            new FalconFPR(-0.757208846506484547575464054), new FalconFPR(0.653172842953776764084203014),
            new FalconFPR(0.893224301195515320342416447), new FalconFPR(0.449611329654606600046294579),
            new FalconFPR(-0.449611329654606600046294579), new FalconFPR(0.893224301195515320342416447),
            new FalconFPR(0.313681740398891476656478846), new FalconFPR(0.949528180593036667195936074),
            new FalconFPR(-0.949528180593036667195936074), new FalconFPR(0.313681740398891476656478846),
            new FalconFPR(0.963776065795439866686464356), new FalconFPR(0.266712757474898386325286515),
            new FalconFPR(-0.266712757474898386325286515), new FalconFPR(0.963776065795439866686464356),
            new FalconFPR(0.492898192229784036873026689), new FalconFPR(0.870086991108711418652292404),
            new FalconFPR(-0.870086991108711418652292404), new FalconFPR(0.492898192229784036873026689),
            new FalconFPR(0.788346427626606262009164705), new FalconFPR(0.615231590580626845484913563),
            new FalconFPR(-0.615231590580626845484913563), new FalconFPR(0.788346427626606262009164705),
            new FalconFPR(0.122410675199216198498704474), new FalconFPR(0.992479534598709998156767252),
            new FalconFPR(-0.992479534598709998156767252), new FalconFPR(0.122410675199216198498704474),
            new FalconFPR(0.985277642388941244774018433), new FalconFPR(0.170961888760301226363642357),
            new FalconFPR(-0.170961888760301226363642357), new FalconFPR(0.985277642388941244774018433),
            new FalconFPR(0.575808191417845300745972454), new FalconFPR(0.817584813151583696504920884),
            new FalconFPR(-0.817584813151583696504920884), new FalconFPR(0.575808191417845300745972454),
            new FalconFPR(0.844853565249707073259571205), new FalconFPR(0.534997619887097210663076905),
            new FalconFPR(-0.534997619887097210663076905), new FalconFPR(0.844853565249707073259571205),
            new FalconFPR(0.219101240156869797227737547), new FalconFPR(0.975702130038528544460395766),
            new FalconFPR(-0.975702130038528544460395766), new FalconFPR(0.219101240156869797227737547),
            new FalconFPR(0.932992798834738887711660256), new FalconFPR(0.359895036534988148775104572),
            new FalconFPR(-0.359895036534988148775104572), new FalconFPR(0.932992798834738887711660256),
            new FalconFPR(0.405241314004989870908481306), new FalconFPR(0.914209755703530654635014829),
            new FalconFPR(-0.914209755703530654635014829), new FalconFPR(0.405241314004989870908481306),
            new FalconFPR(0.724247082951466920941069243), new FalconFPR(0.689540544737066924616730630),
            new FalconFPR(-0.689540544737066924616730630), new FalconFPR(0.724247082951466920941069243),
            new FalconFPR(0.024541228522912288031734529), new FalconFPR(0.999698818696204220115765650),
            new FalconFPR(-0.999698818696204220115765650), new FalconFPR(0.024541228522912288031734529),
            new FalconFPR(0.999924701839144540921646491), new FalconFPR(0.012271538285719926079408262),
            new FalconFPR(-0.012271538285719926079408262), new FalconFPR(0.999924701839144540921646491),
            new FalconFPR(0.698376249408972853554813503), new FalconFPR(0.715730825283818654125532623),
            new FalconFPR(-0.715730825283818654125532623), new FalconFPR(0.698376249408972853554813503),
            new FalconFPR(0.919113851690057743908477789), new FalconFPR(0.393992040061048108596188661),
            new FalconFPR(-0.393992040061048108596188661), new FalconFPR(0.919113851690057743908477789),
            new FalconFPR(0.371317193951837543411934967), new FalconFPR(0.928506080473215565937167396),
            new FalconFPR(-0.928506080473215565937167396), new FalconFPR(0.371317193951837543411934967),
            new FalconFPR(0.978317370719627633106240097), new FalconFPR(0.207111376192218549708116020),
            new FalconFPR(-0.207111376192218549708116020), new FalconFPR(0.978317370719627633106240097),
            new FalconFPR(0.545324988422046422313987347), new FalconFPR(0.838224705554838043186996856),
            new FalconFPR(-0.838224705554838043186996856), new FalconFPR(0.545324988422046422313987347),
            new FalconFPR(0.824589302785025264474803737), new FalconFPR(0.565731810783613197389765011),
            new FalconFPR(-0.565731810783613197389765011), new FalconFPR(0.824589302785025264474803737),
            new FalconFPR(0.183039887955140958516532578), new FalconFPR(0.983105487431216327180301155),
            new FalconFPR(-0.983105487431216327180301155), new FalconFPR(0.183039887955140958516532578),
            new FalconFPR(0.993906970002356041546922813), new FalconFPR(0.110222207293883058807899140),
            new FalconFPR(-0.110222207293883058807899140), new FalconFPR(0.993906970002356041546922813),
            new FalconFPR(0.624859488142386377084072816), new FalconFPR(0.780737228572094478301588484),
            new FalconFPR(-0.780737228572094478301588484), new FalconFPR(0.624859488142386377084072816),
            new FalconFPR(0.876070094195406607095844268), new FalconFPR(0.482183772079122748517344481),
            new FalconFPR(-0.482183772079122748517344481), new FalconFPR(0.876070094195406607095844268),
            new FalconFPR(0.278519689385053105207848526), new FalconFPR(0.960430519415565811199035138),
            new FalconFPR(-0.960430519415565811199035138), new FalconFPR(0.278519689385053105207848526),
            new FalconFPR(0.953306040354193836916740383), new FalconFPR(0.302005949319228067003463232),
            new FalconFPR(-0.302005949319228067003463232), new FalconFPR(0.953306040354193836916740383),
            new FalconFPR(0.460538710958240023633181487), new FalconFPR(0.887639620402853947760181617),
            new FalconFPR(-0.887639620402853947760181617), new FalconFPR(0.460538710958240023633181487),
            new FalconFPR(0.765167265622458925888815999), new FalconFPR(0.643831542889791465068086063),
            new FalconFPR(-0.643831542889791465068086063), new FalconFPR(0.765167265622458925888815999),
            new FalconFPR(0.085797312344439890461556332), new FalconFPR(0.996312612182778012627226190),
            new FalconFPR(-0.996312612182778012627226190), new FalconFPR(0.085797312344439890461556332),
            new FalconFPR(0.998118112900149207125155861), new FalconFPR(0.061320736302208577782614593),
            new FalconFPR(-0.061320736302208577782614593), new FalconFPR(0.998118112900149207125155861),
            new FalconFPR(0.662415777590171761113069817), new FalconFPR(0.749136394523459325469203257),
            new FalconFPR(-0.749136394523459325469203257), new FalconFPR(0.662415777590171761113069817),
            new FalconFPR(0.898674465693953843041976744), new FalconFPR(0.438616238538527637647025738),
            new FalconFPR(-0.438616238538527637647025738), new FalconFPR(0.898674465693953843041976744),
            new FalconFPR(0.325310292162262934135954708), new FalconFPR(0.945607325380521325730945387),
            new FalconFPR(-0.945607325380521325730945387), new FalconFPR(0.325310292162262934135954708),
            new FalconFPR(0.966976471044852109087220226), new FalconFPR(0.254865659604514571553980779),
            new FalconFPR(-0.254865659604514571553980779), new FalconFPR(0.966976471044852109087220226),
            new FalconFPR(0.503538383725717558691867071), new FalconFPR(0.863972856121586737918147054),
            new FalconFPR(-0.863972856121586737918147054), new FalconFPR(0.503538383725717558691867071),
            new FalconFPR(0.795836904608883536262791915), new FalconFPR(0.605511041404325513920626941),
            new FalconFPR(-0.605511041404325513920626941), new FalconFPR(0.795836904608883536262791915),
            new FalconFPR(0.134580708507126186316358409), new FalconFPR(0.990902635427780025108237011),
            new FalconFPR(-0.990902635427780025108237011), new FalconFPR(0.134580708507126186316358409),
            new FalconFPR(0.987301418157858382399815802), new FalconFPR(0.158858143333861441684385360),
            new FalconFPR(-0.158858143333861441684385360), new FalconFPR(0.987301418157858382399815802),
            new FalconFPR(0.585797857456438860328080838), new FalconFPR(0.810457198252594791726703434),
            new FalconFPR(-0.810457198252594791726703434), new FalconFPR(0.585797857456438860328080838),
            new FalconFPR(0.851355193105265142261290312), new FalconFPR(0.524589682678468906215098464),
            new FalconFPR(-0.524589682678468906215098464), new FalconFPR(0.851355193105265142261290312),
            new FalconFPR(0.231058108280671119643236018), new FalconFPR(0.972939952205560145467720114),
            new FalconFPR(-0.972939952205560145467720114), new FalconFPR(0.231058108280671119643236018),
            new FalconFPR(0.937339011912574923201899593), new FalconFPR(0.348418680249434568419308588),
            new FalconFPR(-0.348418680249434568419308588), new FalconFPR(0.937339011912574923201899593),
            new FalconFPR(0.416429560097637182562598911), new FalconFPR(0.909167983090522376563884788),
            new FalconFPR(-0.909167983090522376563884788), new FalconFPR(0.416429560097637182562598911),
            new FalconFPR(0.732654271672412834615546649), new FalconFPR(0.680600997795453050594430464),
            new FalconFPR(-0.680600997795453050594430464), new FalconFPR(0.732654271672412834615546649),
            new FalconFPR(0.036807222941358832324332691), new FalconFPR(0.999322384588349500896221011),
            new FalconFPR(-0.999322384588349500896221011), new FalconFPR(0.036807222941358832324332691),
            new FalconFPR(0.999322384588349500896221011), new FalconFPR(0.036807222941358832324332691),
            new FalconFPR(-0.036807222941358832324332691), new FalconFPR(0.999322384588349500896221011),
            new FalconFPR(0.680600997795453050594430464), new FalconFPR(0.732654271672412834615546649),
            new FalconFPR(-0.732654271672412834615546649), new FalconFPR(0.680600997795453050594430464),
            new FalconFPR(0.909167983090522376563884788), new FalconFPR(0.416429560097637182562598911),
            new FalconFPR(-0.416429560097637182562598911), new FalconFPR(0.909167983090522376563884788),
            new FalconFPR(0.348418680249434568419308588), new FalconFPR(0.937339011912574923201899593),
            new FalconFPR(-0.937339011912574923201899593), new FalconFPR(0.348418680249434568419308588),
            new FalconFPR(0.972939952205560145467720114), new FalconFPR(0.231058108280671119643236018),
            new FalconFPR(-0.231058108280671119643236018), new FalconFPR(0.972939952205560145467720114),
            new FalconFPR(0.524589682678468906215098464), new FalconFPR(0.851355193105265142261290312),
            new FalconFPR(-0.851355193105265142261290312), new FalconFPR(0.524589682678468906215098464),
            new FalconFPR(0.810457198252594791726703434), new FalconFPR(0.585797857456438860328080838),
            new FalconFPR(-0.585797857456438860328080838), new FalconFPR(0.810457198252594791726703434),
            new FalconFPR(0.158858143333861441684385360), new FalconFPR(0.987301418157858382399815802),
            new FalconFPR(-0.987301418157858382399815802), new FalconFPR(0.158858143333861441684385360),
            new FalconFPR(0.990902635427780025108237011), new FalconFPR(0.134580708507126186316358409),
            new FalconFPR(-0.134580708507126186316358409), new FalconFPR(0.990902635427780025108237011),
            new FalconFPR(0.605511041404325513920626941), new FalconFPR(0.795836904608883536262791915),
            new FalconFPR(-0.795836904608883536262791915), new FalconFPR(0.605511041404325513920626941),
            new FalconFPR(0.863972856121586737918147054), new FalconFPR(0.503538383725717558691867071),
            new FalconFPR(-0.503538383725717558691867071), new FalconFPR(0.863972856121586737918147054),
            new FalconFPR(0.254865659604514571553980779), new FalconFPR(0.966976471044852109087220226),
            new FalconFPR(-0.966976471044852109087220226), new FalconFPR(0.254865659604514571553980779),
            new FalconFPR(0.945607325380521325730945387), new FalconFPR(0.325310292162262934135954708),
            new FalconFPR(-0.325310292162262934135954708), new FalconFPR(0.945607325380521325730945387),
            new FalconFPR(0.438616238538527637647025738), new FalconFPR(0.898674465693953843041976744),
            new FalconFPR(-0.898674465693953843041976744), new FalconFPR(0.438616238538527637647025738),
            new FalconFPR(0.749136394523459325469203257), new FalconFPR(0.662415777590171761113069817),
            new FalconFPR(-0.662415777590171761113069817), new FalconFPR(0.749136394523459325469203257),
            new FalconFPR(0.061320736302208577782614593), new FalconFPR(0.998118112900149207125155861),
            new FalconFPR(-0.998118112900149207125155861), new FalconFPR(0.061320736302208577782614593),
            new FalconFPR(0.996312612182778012627226190), new FalconFPR(0.085797312344439890461556332),
            new FalconFPR(-0.085797312344439890461556332), new FalconFPR(0.996312612182778012627226190),
            new FalconFPR(0.643831542889791465068086063), new FalconFPR(0.765167265622458925888815999),
            new FalconFPR(-0.765167265622458925888815999), new FalconFPR(0.643831542889791465068086063),
            new FalconFPR(0.887639620402853947760181617), new FalconFPR(0.460538710958240023633181487),
            new FalconFPR(-0.460538710958240023633181487), new FalconFPR(0.887639620402853947760181617),
            new FalconFPR(0.302005949319228067003463232), new FalconFPR(0.953306040354193836916740383),
            new FalconFPR(-0.953306040354193836916740383), new FalconFPR(0.302005949319228067003463232),
            new FalconFPR(0.960430519415565811199035138), new FalconFPR(0.278519689385053105207848526),
            new FalconFPR(-0.278519689385053105207848526), new FalconFPR(0.960430519415565811199035138),
            new FalconFPR(0.482183772079122748517344481), new FalconFPR(0.876070094195406607095844268),
            new FalconFPR(-0.876070094195406607095844268), new FalconFPR(0.482183772079122748517344481),
            new FalconFPR(0.780737228572094478301588484), new FalconFPR(0.624859488142386377084072816),
            new FalconFPR(-0.624859488142386377084072816), new FalconFPR(0.780737228572094478301588484),
            new FalconFPR(0.110222207293883058807899140), new FalconFPR(0.993906970002356041546922813),
            new FalconFPR(-0.993906970002356041546922813), new FalconFPR(0.110222207293883058807899140),
            new FalconFPR(0.983105487431216327180301155), new FalconFPR(0.183039887955140958516532578),
            new FalconFPR(-0.183039887955140958516532578), new FalconFPR(0.983105487431216327180301155),
            new FalconFPR(0.565731810783613197389765011), new FalconFPR(0.824589302785025264474803737),
            new FalconFPR(-0.824589302785025264474803737), new FalconFPR(0.565731810783613197389765011),
            new FalconFPR(0.838224705554838043186996856), new FalconFPR(0.545324988422046422313987347),
            new FalconFPR(-0.545324988422046422313987347), new FalconFPR(0.838224705554838043186996856),
            new FalconFPR(0.207111376192218549708116020), new FalconFPR(0.978317370719627633106240097),
            new FalconFPR(-0.978317370719627633106240097), new FalconFPR(0.207111376192218549708116020),
            new FalconFPR(0.928506080473215565937167396), new FalconFPR(0.371317193951837543411934967),
            new FalconFPR(-0.371317193951837543411934967), new FalconFPR(0.928506080473215565937167396),
            new FalconFPR(0.393992040061048108596188661), new FalconFPR(0.919113851690057743908477789),
            new FalconFPR(-0.919113851690057743908477789), new FalconFPR(0.393992040061048108596188661),
            new FalconFPR(0.715730825283818654125532623), new FalconFPR(0.698376249408972853554813503),
            new FalconFPR(-0.698376249408972853554813503), new FalconFPR(0.715730825283818654125532623),
            new FalconFPR(0.012271538285719926079408262), new FalconFPR(0.999924701839144540921646491),
            new FalconFPR(-0.999924701839144540921646491), new FalconFPR(0.012271538285719926079408262),
            new FalconFPR(0.999981175282601142656990438), new FalconFPR(0.006135884649154475359640235),
            new FalconFPR(-0.006135884649154475359640235), new FalconFPR(0.999981175282601142656990438),
            new FalconFPR(0.702754744457225302452914421), new FalconFPR(0.711432195745216441522130290),
            new FalconFPR(-0.711432195745216441522130290), new FalconFPR(0.702754744457225302452914421),
            new FalconFPR(0.921514039342041943465396332), new FalconFPR(0.388345046698826291624993541),
            new FalconFPR(-0.388345046698826291624993541), new FalconFPR(0.921514039342041943465396332),
            new FalconFPR(0.377007410216418256726567823), new FalconFPR(0.926210242138311341974793388),
            new FalconFPR(-0.926210242138311341974793388), new FalconFPR(0.377007410216418256726567823),
            new FalconFPR(0.979569765685440534439326110), new FalconFPR(0.201104634842091911558443546),
            new FalconFPR(-0.201104634842091911558443546), new FalconFPR(0.979569765685440534439326110),
            new FalconFPR(0.550457972936604802977289893), new FalconFPR(0.834862874986380056304401383),
            new FalconFPR(-0.834862874986380056304401383), new FalconFPR(0.550457972936604802977289893),
            new FalconFPR(0.828045045257755752067527592), new FalconFPR(0.560661576197336023839710223),
            new FalconFPR(-0.560661576197336023839710223), new FalconFPR(0.828045045257755752067527592),
            new FalconFPR(0.189068664149806212754997837), new FalconFPR(0.981963869109555264072848154),
            new FalconFPR(-0.981963869109555264072848154), new FalconFPR(0.189068664149806212754997837),
            new FalconFPR(0.994564570734255452119106243), new FalconFPR(0.104121633872054579120943880),
            new FalconFPR(-0.104121633872054579120943880), new FalconFPR(0.994564570734255452119106243),
            new FalconFPR(0.629638238914927025372981341), new FalconFPR(0.776888465673232450040827983),
            new FalconFPR(-0.776888465673232450040827983), new FalconFPR(0.629638238914927025372981341),
            new FalconFPR(0.879012226428633477831323711), new FalconFPR(0.476799230063322133342158117),
            new FalconFPR(-0.476799230063322133342158117), new FalconFPR(0.879012226428633477831323711),
            new FalconFPR(0.284407537211271843618310615), new FalconFPR(0.958703474895871555374645792),
            new FalconFPR(-0.958703474895871555374645792), new FalconFPR(0.284407537211271843618310615),
            new FalconFPR(0.955141168305770721498157712), new FalconFPR(0.296150888243623824121786128),
            new FalconFPR(-0.296150888243623824121786128), new FalconFPR(0.955141168305770721498157712),
            new FalconFPR(0.465976495767966177902756065), new FalconFPR(0.884797098430937780104007041),
            new FalconFPR(-0.884797098430937780104007041), new FalconFPR(0.465976495767966177902756065),
            new FalconFPR(0.769103337645579639346626069), new FalconFPR(0.639124444863775743801488193),
            new FalconFPR(-0.639124444863775743801488193), new FalconFPR(0.769103337645579639346626069),
            new FalconFPR(0.091908956497132728624990979), new FalconFPR(0.995767414467659793982495643),
            new FalconFPR(-0.995767414467659793982495643), new FalconFPR(0.091908956497132728624990979),
            new FalconFPR(0.998475580573294752208559038), new FalconFPR(0.055195244349689939809447526),
            new FalconFPR(-0.055195244349689939809447526), new FalconFPR(0.998475580573294752208559038),
            new FalconFPR(0.666999922303637506650154222), new FalconFPR(0.745057785441465962407907310),
            new FalconFPR(-0.745057785441465962407907310), new FalconFPR(0.666999922303637506650154222),
            new FalconFPR(0.901348847046022014570746093), new FalconFPR(0.433093818853151968484222638),
            new FalconFPR(-0.433093818853151968484222638), new FalconFPR(0.901348847046022014570746093),
            new FalconFPR(0.331106305759876401737190737), new FalconFPR(0.943593458161960361495301445),
            new FalconFPR(-0.943593458161960361495301445), new FalconFPR(0.331106305759876401737190737),
            new FalconFPR(0.968522094274417316221088329), new FalconFPR(0.248927605745720168110682816),
            new FalconFPR(-0.248927605745720168110682816), new FalconFPR(0.968522094274417316221088329),
            new FalconFPR(0.508830142543107036931749324), new FalconFPR(0.860866938637767279344583877),
            new FalconFPR(-0.860866938637767279344583877), new FalconFPR(0.508830142543107036931749324),
            new FalconFPR(0.799537269107905033500246232), new FalconFPR(0.600616479383868926653875896),
            new FalconFPR(-0.600616479383868926653875896), new FalconFPR(0.799537269107905033500246232),
            new FalconFPR(0.140658239332849230714788846), new FalconFPR(0.990058210262297105505906464),
            new FalconFPR(-0.990058210262297105505906464), new FalconFPR(0.140658239332849230714788846),
            new FalconFPR(0.988257567730749491404792538), new FalconFPR(0.152797185258443427720336613),
            new FalconFPR(-0.152797185258443427720336613), new FalconFPR(0.988257567730749491404792538),
            new FalconFPR(0.590759701858874228423887908), new FalconFPR(0.806847553543799272206514313),
            new FalconFPR(-0.806847553543799272206514313), new FalconFPR(0.590759701858874228423887908),
            new FalconFPR(0.854557988365400520767862276), new FalconFPR(0.519355990165589587361829932),
            new FalconFPR(-0.519355990165589587361829932), new FalconFPR(0.854557988365400520767862276),
            new FalconFPR(0.237023605994367206867735915), new FalconFPR(0.971503890986251775537099622),
            new FalconFPR(-0.971503890986251775537099622), new FalconFPR(0.237023605994367206867735915),
            new FalconFPR(0.939459223602189911962669246), new FalconFPR(0.342660717311994397592781983),
            new FalconFPR(-0.342660717311994397592781983), new FalconFPR(0.939459223602189911962669246),
            new FalconFPR(0.422000270799799685941287941), new FalconFPR(0.906595704514915365332960588),
            new FalconFPR(-0.906595704514915365332960588), new FalconFPR(0.422000270799799685941287941),
            new FalconFPR(0.736816568877369875090132520), new FalconFPR(0.676092703575315960360419228),
            new FalconFPR(-0.676092703575315960360419228), new FalconFPR(0.736816568877369875090132520),
            new FalconFPR(0.042938256934940823077124540), new FalconFPR(0.999077727752645382888781997),
            new FalconFPR(-0.999077727752645382888781997), new FalconFPR(0.042938256934940823077124540),
            new FalconFPR(0.999529417501093163079703322), new FalconFPR(0.030674803176636625934021028),
            new FalconFPR(-0.030674803176636625934021028), new FalconFPR(0.999529417501093163079703322),
            new FalconFPR(0.685083667772700381362052545), new FalconFPR(0.728464390448225196492035438),
            new FalconFPR(-0.728464390448225196492035438), new FalconFPR(0.685083667772700381362052545),
            new FalconFPR(0.911706032005429851404397325), new FalconFPR(0.410843171057903942183466675),
            new FalconFPR(-0.410843171057903942183466675), new FalconFPR(0.911706032005429851404397325),
            new FalconFPR(0.354163525420490382357395796), new FalconFPR(0.935183509938947577642207480),
            new FalconFPR(-0.935183509938947577642207480), new FalconFPR(0.354163525420490382357395796),
            new FalconFPR(0.974339382785575860518721668), new FalconFPR(0.225083911359792835991642120),
            new FalconFPR(-0.225083911359792835991642120), new FalconFPR(0.974339382785575860518721668),
            new FalconFPR(0.529803624686294668216054671), new FalconFPR(0.848120344803297251279133563),
            new FalconFPR(-0.848120344803297251279133563), new FalconFPR(0.529803624686294668216054671),
            new FalconFPR(0.814036329705948361654516690), new FalconFPR(0.580813958095764545075595272),
            new FalconFPR(-0.580813958095764545075595272), new FalconFPR(0.814036329705948361654516690),
            new FalconFPR(0.164913120489969921418189113), new FalconFPR(0.986308097244598647863297524),
            new FalconFPR(-0.986308097244598647863297524), new FalconFPR(0.164913120489969921418189113),
            new FalconFPR(0.991709753669099522860049931), new FalconFPR(0.128498110793793172624415589),
            new FalconFPR(-0.128498110793793172624415589), new FalconFPR(0.991709753669099522860049931),
            new FalconFPR(0.610382806276309452716352152), new FalconFPR(0.792106577300212351782342879),
            new FalconFPR(-0.792106577300212351782342879), new FalconFPR(0.610382806276309452716352152),
            new FalconFPR(0.867046245515692651480195629), new FalconFPR(0.498227666972781852410983869),
            new FalconFPR(-0.498227666972781852410983869), new FalconFPR(0.867046245515692651480195629),
            new FalconFPR(0.260794117915275518280186509), new FalconFPR(0.965394441697689374550843858),
            new FalconFPR(-0.965394441697689374550843858), new FalconFPR(0.260794117915275518280186509),
            new FalconFPR(0.947585591017741134653387321), new FalconFPR(0.319502030816015677901518272),
            new FalconFPR(-0.319502030816015677901518272), new FalconFPR(0.947585591017741134653387321),
            new FalconFPR(0.444122144570429231642069418), new FalconFPR(0.895966249756185155914560282),
            new FalconFPR(-0.895966249756185155914560282), new FalconFPR(0.444122144570429231642069418),
            new FalconFPR(0.753186799043612482483430486), new FalconFPR(0.657806693297078656931182264),
            new FalconFPR(-0.657806693297078656931182264), new FalconFPR(0.753186799043612482483430486),
            new FalconFPR(0.067443919563664057897972422), new FalconFPR(0.997723066644191609848546728),
            new FalconFPR(-0.997723066644191609848546728), new FalconFPR(0.067443919563664057897972422),
            new FalconFPR(0.996820299291165714972629398), new FalconFPR(0.079682437971430121147120656),
            new FalconFPR(-0.079682437971430121147120656), new FalconFPR(0.996820299291165714972629398),
            new FalconFPR(0.648514401022112445084560551), new FalconFPR(0.761202385484261814029709836),
            new FalconFPR(-0.761202385484261814029709836), new FalconFPR(0.648514401022112445084560551),
            new FalconFPR(0.890448723244757889952150560), new FalconFPR(0.455083587126343823535869268),
            new FalconFPR(-0.455083587126343823535869268), new FalconFPR(0.890448723244757889952150560),
            new FalconFPR(0.307849640041534893682063646), new FalconFPR(0.951435020969008369549175569),
            new FalconFPR(-0.951435020969008369549175569), new FalconFPR(0.307849640041534893682063646),
            new FalconFPR(0.962121404269041595429604316), new FalconFPR(0.272621355449948984493347477),
            new FalconFPR(-0.272621355449948984493347477), new FalconFPR(0.962121404269041595429604316),
            new FalconFPR(0.487550160148435954641485027), new FalconFPR(0.873094978418290098636085973),
            new FalconFPR(-0.873094978418290098636085973), new FalconFPR(0.487550160148435954641485027),
            new FalconFPR(0.784556597155575233023892575), new FalconFPR(0.620057211763289178646268191),
            new FalconFPR(-0.620057211763289178646268191), new FalconFPR(0.784556597155575233023892575),
            new FalconFPR(0.116318630911904767252544319), new FalconFPR(0.993211949234794533104601012),
            new FalconFPR(-0.993211949234794533104601012), new FalconFPR(0.116318630911904767252544319),
            new FalconFPR(0.984210092386929073193874387), new FalconFPR(0.177004220412148756196839844),
            new FalconFPR(-0.177004220412148756196839844), new FalconFPR(0.984210092386929073193874387),
            new FalconFPR(0.570780745886967280232652864), new FalconFPR(0.821102514991104679060430820),
            new FalconFPR(-0.821102514991104679060430820), new FalconFPR(0.570780745886967280232652864),
            new FalconFPR(0.841554977436898409603499520), new FalconFPR(0.540171472729892881297845480),
            new FalconFPR(-0.540171472729892881297845480), new FalconFPR(0.841554977436898409603499520),
            new FalconFPR(0.213110319916091373967757518), new FalconFPR(0.977028142657754351485866211),
            new FalconFPR(-0.977028142657754351485866211), new FalconFPR(0.213110319916091373967757518),
            new FalconFPR(0.930766961078983731944872340), new FalconFPR(0.365612997804773870011745909),
            new FalconFPR(-0.365612997804773870011745909), new FalconFPR(0.930766961078983731944872340),
            new FalconFPR(0.399624199845646828544117031), new FalconFPR(0.916679059921042663116457013),
            new FalconFPR(-0.916679059921042663116457013), new FalconFPR(0.399624199845646828544117031),
            new FalconFPR(0.720002507961381629076682999), new FalconFPR(0.693971460889654009003734389),
            new FalconFPR(-0.693971460889654009003734389), new FalconFPR(0.720002507961381629076682999),
            new FalconFPR(0.018406729905804820927366313), new FalconFPR(0.999830581795823422015722275),
            new FalconFPR(-0.999830581795823422015722275), new FalconFPR(0.018406729905804820927366313),
            new FalconFPR(0.999830581795823422015722275), new FalconFPR(0.018406729905804820927366313),
            new FalconFPR(-0.018406729905804820927366313), new FalconFPR(0.999830581795823422015722275),
            new FalconFPR(0.693971460889654009003734389), new FalconFPR(0.720002507961381629076682999),
            new FalconFPR(-0.720002507961381629076682999), new FalconFPR(0.693971460889654009003734389),
            new FalconFPR(0.916679059921042663116457013), new FalconFPR(0.399624199845646828544117031),
            new FalconFPR(-0.399624199845646828544117031), new FalconFPR(0.916679059921042663116457013),
            new FalconFPR(0.365612997804773870011745909), new FalconFPR(0.930766961078983731944872340),
            new FalconFPR(-0.930766961078983731944872340), new FalconFPR(0.365612997804773870011745909),
            new FalconFPR(0.977028142657754351485866211), new FalconFPR(0.213110319916091373967757518),
            new FalconFPR(-0.213110319916091373967757518), new FalconFPR(0.977028142657754351485866211),
            new FalconFPR(0.540171472729892881297845480), new FalconFPR(0.841554977436898409603499520),
            new FalconFPR(-0.841554977436898409603499520), new FalconFPR(0.540171472729892881297845480),
            new FalconFPR(0.821102514991104679060430820), new FalconFPR(0.570780745886967280232652864),
            new FalconFPR(-0.570780745886967280232652864), new FalconFPR(0.821102514991104679060430820),
            new FalconFPR(0.177004220412148756196839844), new FalconFPR(0.984210092386929073193874387),
            new FalconFPR(-0.984210092386929073193874387), new FalconFPR(0.177004220412148756196839844),
            new FalconFPR(0.993211949234794533104601012), new FalconFPR(0.116318630911904767252544319),
            new FalconFPR(-0.116318630911904767252544319), new FalconFPR(0.993211949234794533104601012),
            new FalconFPR(0.620057211763289178646268191), new FalconFPR(0.784556597155575233023892575),
            new FalconFPR(-0.784556597155575233023892575), new FalconFPR(0.620057211763289178646268191),
            new FalconFPR(0.873094978418290098636085973), new FalconFPR(0.487550160148435954641485027),
            new FalconFPR(-0.487550160148435954641485027), new FalconFPR(0.873094978418290098636085973),
            new FalconFPR(0.272621355449948984493347477), new FalconFPR(0.962121404269041595429604316),
            new FalconFPR(-0.962121404269041595429604316), new FalconFPR(0.272621355449948984493347477),
            new FalconFPR(0.951435020969008369549175569), new FalconFPR(0.307849640041534893682063646),
            new FalconFPR(-0.307849640041534893682063646), new FalconFPR(0.951435020969008369549175569),
            new FalconFPR(0.455083587126343823535869268), new FalconFPR(0.890448723244757889952150560),
            new FalconFPR(-0.890448723244757889952150560), new FalconFPR(0.455083587126343823535869268),
            new FalconFPR(0.761202385484261814029709836), new FalconFPR(0.648514401022112445084560551),
            new FalconFPR(-0.648514401022112445084560551), new FalconFPR(0.761202385484261814029709836),
            new FalconFPR(0.079682437971430121147120656), new FalconFPR(0.996820299291165714972629398),
            new FalconFPR(-0.996820299291165714972629398), new FalconFPR(0.079682437971430121147120656),
            new FalconFPR(0.997723066644191609848546728), new FalconFPR(0.067443919563664057897972422),
            new FalconFPR(-0.067443919563664057897972422), new FalconFPR(0.997723066644191609848546728),
            new FalconFPR(0.657806693297078656931182264), new FalconFPR(0.753186799043612482483430486),
            new FalconFPR(-0.753186799043612482483430486), new FalconFPR(0.657806693297078656931182264),
            new FalconFPR(0.895966249756185155914560282), new FalconFPR(0.444122144570429231642069418),
            new FalconFPR(-0.444122144570429231642069418), new FalconFPR(0.895966249756185155914560282),
            new FalconFPR(0.319502030816015677901518272), new FalconFPR(0.947585591017741134653387321),
            new FalconFPR(-0.947585591017741134653387321), new FalconFPR(0.319502030816015677901518272),
            new FalconFPR(0.965394441697689374550843858), new FalconFPR(0.260794117915275518280186509),
            new FalconFPR(-0.260794117915275518280186509), new FalconFPR(0.965394441697689374550843858),
            new FalconFPR(0.498227666972781852410983869), new FalconFPR(0.867046245515692651480195629),
            new FalconFPR(-0.867046245515692651480195629), new FalconFPR(0.498227666972781852410983869),
            new FalconFPR(0.792106577300212351782342879), new FalconFPR(0.610382806276309452716352152),
            new FalconFPR(-0.610382806276309452716352152), new FalconFPR(0.792106577300212351782342879),
            new FalconFPR(0.128498110793793172624415589), new FalconFPR(0.991709753669099522860049931),
            new FalconFPR(-0.991709753669099522860049931), new FalconFPR(0.128498110793793172624415589),
            new FalconFPR(0.986308097244598647863297524), new FalconFPR(0.164913120489969921418189113),
            new FalconFPR(-0.164913120489969921418189113), new FalconFPR(0.986308097244598647863297524),
            new FalconFPR(0.580813958095764545075595272), new FalconFPR(0.814036329705948361654516690),
            new FalconFPR(-0.814036329705948361654516690), new FalconFPR(0.580813958095764545075595272),
            new FalconFPR(0.848120344803297251279133563), new FalconFPR(0.529803624686294668216054671),
            new FalconFPR(-0.529803624686294668216054671), new FalconFPR(0.848120344803297251279133563),
            new FalconFPR(0.225083911359792835991642120), new FalconFPR(0.974339382785575860518721668),
            new FalconFPR(-0.974339382785575860518721668), new FalconFPR(0.225083911359792835991642120),
            new FalconFPR(0.935183509938947577642207480), new FalconFPR(0.354163525420490382357395796),
            new FalconFPR(-0.354163525420490382357395796), new FalconFPR(0.935183509938947577642207480),
            new FalconFPR(0.410843171057903942183466675), new FalconFPR(0.911706032005429851404397325),
            new FalconFPR(-0.911706032005429851404397325), new FalconFPR(0.410843171057903942183466675),
            new FalconFPR(0.728464390448225196492035438), new FalconFPR(0.685083667772700381362052545),
            new FalconFPR(-0.685083667772700381362052545), new FalconFPR(0.728464390448225196492035438),
            new FalconFPR(0.030674803176636625934021028), new FalconFPR(0.999529417501093163079703322),
            new FalconFPR(-0.999529417501093163079703322), new FalconFPR(0.030674803176636625934021028),
            new FalconFPR(0.999077727752645382888781997), new FalconFPR(0.042938256934940823077124540),
            new FalconFPR(-0.042938256934940823077124540), new FalconFPR(0.999077727752645382888781997),
            new FalconFPR(0.676092703575315960360419228), new FalconFPR(0.736816568877369875090132520),
            new FalconFPR(-0.736816568877369875090132520), new FalconFPR(0.676092703575315960360419228),
            new FalconFPR(0.906595704514915365332960588), new FalconFPR(0.422000270799799685941287941),
            new FalconFPR(-0.422000270799799685941287941), new FalconFPR(0.906595704514915365332960588),
            new FalconFPR(0.342660717311994397592781983), new FalconFPR(0.939459223602189911962669246),
            new FalconFPR(-0.939459223602189911962669246), new FalconFPR(0.342660717311994397592781983),
            new FalconFPR(0.971503890986251775537099622), new FalconFPR(0.237023605994367206867735915),
            new FalconFPR(-0.237023605994367206867735915), new FalconFPR(0.971503890986251775537099622),
            new FalconFPR(0.519355990165589587361829932), new FalconFPR(0.854557988365400520767862276),
            new FalconFPR(-0.854557988365400520767862276), new FalconFPR(0.519355990165589587361829932),
            new FalconFPR(0.806847553543799272206514313), new FalconFPR(0.590759701858874228423887908),
            new FalconFPR(-0.590759701858874228423887908), new FalconFPR(0.806847553543799272206514313),
            new FalconFPR(0.152797185258443427720336613), new FalconFPR(0.988257567730749491404792538),
            new FalconFPR(-0.988257567730749491404792538), new FalconFPR(0.152797185258443427720336613),
            new FalconFPR(0.990058210262297105505906464), new FalconFPR(0.140658239332849230714788846),
            new FalconFPR(-0.140658239332849230714788846), new FalconFPR(0.990058210262297105505906464),
            new FalconFPR(0.600616479383868926653875896), new FalconFPR(0.799537269107905033500246232),
            new FalconFPR(-0.799537269107905033500246232), new FalconFPR(0.600616479383868926653875896),
            new FalconFPR(0.860866938637767279344583877), new FalconFPR(0.508830142543107036931749324),
            new FalconFPR(-0.508830142543107036931749324), new FalconFPR(0.860866938637767279344583877),
            new FalconFPR(0.248927605745720168110682816), new FalconFPR(0.968522094274417316221088329),
            new FalconFPR(-0.968522094274417316221088329), new FalconFPR(0.248927605745720168110682816),
            new FalconFPR(0.943593458161960361495301445), new FalconFPR(0.331106305759876401737190737),
            new FalconFPR(-0.331106305759876401737190737), new FalconFPR(0.943593458161960361495301445),
            new FalconFPR(0.433093818853151968484222638), new FalconFPR(0.901348847046022014570746093),
            new FalconFPR(-0.901348847046022014570746093), new FalconFPR(0.433093818853151968484222638),
            new FalconFPR(0.745057785441465962407907310), new FalconFPR(0.666999922303637506650154222),
            new FalconFPR(-0.666999922303637506650154222), new FalconFPR(0.745057785441465962407907310),
            new FalconFPR(0.055195244349689939809447526), new FalconFPR(0.998475580573294752208559038),
            new FalconFPR(-0.998475580573294752208559038), new FalconFPR(0.055195244349689939809447526),
            new FalconFPR(0.995767414467659793982495643), new FalconFPR(0.091908956497132728624990979),
            new FalconFPR(-0.091908956497132728624990979), new FalconFPR(0.995767414467659793982495643),
            new FalconFPR(0.639124444863775743801488193), new FalconFPR(0.769103337645579639346626069),
            new FalconFPR(-0.769103337645579639346626069), new FalconFPR(0.639124444863775743801488193),
            new FalconFPR(0.884797098430937780104007041), new FalconFPR(0.465976495767966177902756065),
            new FalconFPR(-0.465976495767966177902756065), new FalconFPR(0.884797098430937780104007041),
            new FalconFPR(0.296150888243623824121786128), new FalconFPR(0.955141168305770721498157712),
            new FalconFPR(-0.955141168305770721498157712), new FalconFPR(0.296150888243623824121786128),
            new FalconFPR(0.958703474895871555374645792), new FalconFPR(0.284407537211271843618310615),
            new FalconFPR(-0.284407537211271843618310615), new FalconFPR(0.958703474895871555374645792),
            new FalconFPR(0.476799230063322133342158117), new FalconFPR(0.879012226428633477831323711),
            new FalconFPR(-0.879012226428633477831323711), new FalconFPR(0.476799230063322133342158117),
            new FalconFPR(0.776888465673232450040827983), new FalconFPR(0.629638238914927025372981341),
            new FalconFPR(-0.629638238914927025372981341), new FalconFPR(0.776888465673232450040827983),
            new FalconFPR(0.104121633872054579120943880), new FalconFPR(0.994564570734255452119106243),
            new FalconFPR(-0.994564570734255452119106243), new FalconFPR(0.104121633872054579120943880),
            new FalconFPR(0.981963869109555264072848154), new FalconFPR(0.189068664149806212754997837),
            new FalconFPR(-0.189068664149806212754997837), new FalconFPR(0.981963869109555264072848154),
            new FalconFPR(0.560661576197336023839710223), new FalconFPR(0.828045045257755752067527592),
            new FalconFPR(-0.828045045257755752067527592), new FalconFPR(0.560661576197336023839710223),
            new FalconFPR(0.834862874986380056304401383), new FalconFPR(0.550457972936604802977289893),
            new FalconFPR(-0.550457972936604802977289893), new FalconFPR(0.834862874986380056304401383),
            new FalconFPR(0.201104634842091911558443546), new FalconFPR(0.979569765685440534439326110),
            new FalconFPR(-0.979569765685440534439326110), new FalconFPR(0.201104634842091911558443546),
            new FalconFPR(0.926210242138311341974793388), new FalconFPR(0.377007410216418256726567823),
            new FalconFPR(-0.377007410216418256726567823), new FalconFPR(0.926210242138311341974793388),
            new FalconFPR(0.388345046698826291624993541), new FalconFPR(0.921514039342041943465396332),
            new FalconFPR(-0.921514039342041943465396332), new FalconFPR(0.388345046698826291624993541),
            new FalconFPR(0.711432195745216441522130290), new FalconFPR(0.702754744457225302452914421),
            new FalconFPR(-0.702754744457225302452914421), new FalconFPR(0.711432195745216441522130290),
            new FalconFPR(0.006135884649154475359640235), new FalconFPR(0.999981175282601142656990438),
            new FalconFPR(-0.999981175282601142656990438), new FalconFPR(0.006135884649154475359640235),
            new FalconFPR(0.999995293809576171511580126), new FalconFPR(0.003067956762965976270145365),
            new FalconFPR(-0.003067956762965976270145365), new FalconFPR(0.999995293809576171511580126),
            new FalconFPR(0.704934080375904908852523758), new FalconFPR(0.709272826438865651316533772),
            new FalconFPR(-0.709272826438865651316533772), new FalconFPR(0.704934080375904908852523758),
            new FalconFPR(0.922701128333878570437264227), new FalconFPR(0.385516053843918864075607949),
            new FalconFPR(-0.385516053843918864075607949), new FalconFPR(0.922701128333878570437264227),
            new FalconFPR(0.379847208924051170576281147), new FalconFPR(0.925049240782677590302371869),
            new FalconFPR(-0.925049240782677590302371869), new FalconFPR(0.379847208924051170576281147),
            new FalconFPR(0.980182135968117392690210009), new FalconFPR(0.198098410717953586179324918),
            new FalconFPR(-0.198098410717953586179324918), new FalconFPR(0.980182135968117392690210009),
            new FalconFPR(0.553016705580027531764226988), new FalconFPR(0.833170164701913186439915922),
            new FalconFPR(-0.833170164701913186439915922), new FalconFPR(0.553016705580027531764226988),
            new FalconFPR(0.829761233794523042469023765), new FalconFPR(0.558118531220556115693702964),
            new FalconFPR(-0.558118531220556115693702964), new FalconFPR(0.829761233794523042469023765),
            new FalconFPR(0.192080397049892441679288205), new FalconFPR(0.981379193313754574318224190),
            new FalconFPR(-0.981379193313754574318224190), new FalconFPR(0.192080397049892441679288205),
            new FalconFPR(0.994879330794805620591166107), new FalconFPR(0.101069862754827824987887585),
            new FalconFPR(-0.101069862754827824987887585), new FalconFPR(0.994879330794805620591166107),
            new FalconFPR(0.632018735939809021909403706), new FalconFPR(0.774953106594873878359129282),
            new FalconFPR(-0.774953106594873878359129282), new FalconFPR(0.632018735939809021909403706),
            new FalconFPR(0.880470889052160770806542929), new FalconFPR(0.474100214650550014398580015),
            new FalconFPR(-0.474100214650550014398580015), new FalconFPR(0.880470889052160770806542929),
            new FalconFPR(0.287347459544729526477331841), new FalconFPR(0.957826413027532890321037029),
            new FalconFPR(-0.957826413027532890321037029), new FalconFPR(0.287347459544729526477331841),
            new FalconFPR(0.956045251349996443270479823), new FalconFPR(0.293219162694258650606608599),
            new FalconFPR(-0.293219162694258650606608599), new FalconFPR(0.956045251349996443270479823),
            new FalconFPR(0.468688822035827933697617870), new FalconFPR(0.883363338665731594736308015),
            new FalconFPR(-0.883363338665731594736308015), new FalconFPR(0.468688822035827933697617870),
            new FalconFPR(0.771060524261813773200605759), new FalconFPR(0.636761861236284230413943435),
            new FalconFPR(-0.636761861236284230413943435), new FalconFPR(0.771060524261813773200605759),
            new FalconFPR(0.094963495329638998938034312), new FalconFPR(0.995480755491926941769171600),
            new FalconFPR(-0.995480755491926941769171600), new FalconFPR(0.094963495329638998938034312),
            new FalconFPR(0.998640218180265222418199049), new FalconFPR(0.052131704680283321236358216),
            new FalconFPR(-0.052131704680283321236358216), new FalconFPR(0.998640218180265222418199049),
            new FalconFPR(0.669282588346636065720696366), new FalconFPR(0.743007952135121693517362293),
            new FalconFPR(-0.743007952135121693517362293), new FalconFPR(0.669282588346636065720696366),
            new FalconFPR(0.902673318237258806751502391), new FalconFPR(0.430326481340082633908199031),
            new FalconFPR(-0.430326481340082633908199031), new FalconFPR(0.902673318237258806751502391),
            new FalconFPR(0.333999651442009404650865481), new FalconFPR(0.942573197601446879280758735),
            new FalconFPR(-0.942573197601446879280758735), new FalconFPR(0.333999651442009404650865481),
            new FalconFPR(0.969281235356548486048290738), new FalconFPR(0.245955050335794611599924709),
            new FalconFPR(-0.245955050335794611599924709), new FalconFPR(0.969281235356548486048290738),
            new FalconFPR(0.511468850437970399504391001), new FalconFPR(0.859301818357008404783582139),
            new FalconFPR(-0.859301818357008404783582139), new FalconFPR(0.511468850437970399504391001),
            new FalconFPR(0.801376171723140219430247777), new FalconFPR(0.598160706996342311724958652),
            new FalconFPR(-0.598160706996342311724958652), new FalconFPR(0.801376171723140219430247777),
            new FalconFPR(0.143695033150294454819773349), new FalconFPR(0.989622017463200834623694454),
            new FalconFPR(-0.989622017463200834623694454), new FalconFPR(0.143695033150294454819773349),
            new FalconFPR(0.988721691960323767604516485), new FalconFPR(0.149764534677321517229695737),
            new FalconFPR(-0.149764534677321517229695737), new FalconFPR(0.988721691960323767604516485),
            new FalconFPR(0.593232295039799808047809426), new FalconFPR(0.805031331142963597922659282),
            new FalconFPR(-0.805031331142963597922659282), new FalconFPR(0.593232295039799808047809426),
            new FalconFPR(0.856147328375194481019630732), new FalconFPR(0.516731799017649881508753876),
            new FalconFPR(-0.516731799017649881508753876), new FalconFPR(0.856147328375194481019630732),
            new FalconFPR(0.240003022448741486568922365), new FalconFPR(0.970772140728950302138169611),
            new FalconFPR(-0.970772140728950302138169611), new FalconFPR(0.240003022448741486568922365),
            new FalconFPR(0.940506070593268323787291309), new FalconFPR(0.339776884406826857828825803),
            new FalconFPR(-0.339776884406826857828825803), new FalconFPR(0.940506070593268323787291309),
            new FalconFPR(0.424779681209108833357226189), new FalconFPR(0.905296759318118774354048329),
            new FalconFPR(-0.905296759318118774354048329), new FalconFPR(0.424779681209108833357226189),
            new FalconFPR(0.738887324460615147933116508), new FalconFPR(0.673829000378756060917568372),
            new FalconFPR(-0.673829000378756060917568372), new FalconFPR(0.738887324460615147933116508),
            new FalconFPR(0.046003182130914628814301788), new FalconFPR(0.998941293186856850633930266),
            new FalconFPR(-0.998941293186856850633930266), new FalconFPR(0.046003182130914628814301788),
            new FalconFPR(0.999618822495178597116830637), new FalconFPR(0.027608145778965741612354872),
            new FalconFPR(-0.027608145778965741612354872), new FalconFPR(0.999618822495178597116830637),
            new FalconFPR(0.687315340891759108199186948), new FalconFPR(0.726359155084345976817494315),
            new FalconFPR(-0.726359155084345976817494315), new FalconFPR(0.687315340891759108199186948),
            new FalconFPR(0.912962190428398164628018233), new FalconFPR(0.408044162864978680820747499),
            new FalconFPR(-0.408044162864978680820747499), new FalconFPR(0.912962190428398164628018233),
            new FalconFPR(0.357030961233430032614954036), new FalconFPR(0.934092550404258914729877883),
            new FalconFPR(-0.934092550404258914729877883), new FalconFPR(0.357030961233430032614954036),
            new FalconFPR(0.975025345066994146844913468), new FalconFPR(0.222093620973203534094094721),
            new FalconFPR(-0.222093620973203534094094721), new FalconFPR(0.975025345066994146844913468),
            new FalconFPR(0.532403127877197971442805218), new FalconFPR(0.846490938774052078300544488),
            new FalconFPR(-0.846490938774052078300544488), new FalconFPR(0.532403127877197971442805218),
            new FalconFPR(0.815814410806733789010772660), new FalconFPR(0.578313796411655563342245019),
            new FalconFPR(-0.578313796411655563342245019), new FalconFPR(0.815814410806733789010772660),
            new FalconFPR(0.167938294974731178054745536), new FalconFPR(0.985797509167567424700995000),
            new FalconFPR(-0.985797509167567424700995000), new FalconFPR(0.167938294974731178054745536),
            new FalconFPR(0.992099313142191757112085445), new FalconFPR(0.125454983411546238542336453),
            new FalconFPR(-0.125454983411546238542336453), new FalconFPR(0.992099313142191757112085445),
            new FalconFPR(0.612810082429409703935211936), new FalconFPR(0.790230221437310055030217152),
            new FalconFPR(-0.790230221437310055030217152), new FalconFPR(0.612810082429409703935211936),
            new FalconFPR(0.868570705971340895340449876), new FalconFPR(0.495565261825772531150266670),
            new FalconFPR(-0.495565261825772531150266670), new FalconFPR(0.868570705971340895340449876),
            new FalconFPR(0.263754678974831383611349322), new FalconFPR(0.964589793289812723836432159),
            new FalconFPR(-0.964589793289812723836432159), new FalconFPR(0.263754678974831383611349322),
            new FalconFPR(0.948561349915730288158494826), new FalconFPR(0.316593375556165867243047035),
            new FalconFPR(-0.316593375556165867243047035), new FalconFPR(0.948561349915730288158494826),
            new FalconFPR(0.446868840162374195353044389), new FalconFPR(0.894599485631382678433072126),
            new FalconFPR(-0.894599485631382678433072126), new FalconFPR(0.446868840162374195353044389),
            new FalconFPR(0.755201376896536527598710756), new FalconFPR(0.655492852999615385312679701),
            new FalconFPR(-0.655492852999615385312679701), new FalconFPR(0.755201376896536527598710756),
            new FalconFPR(0.070504573389613863027351471), new FalconFPR(0.997511456140303459699448390),
            new FalconFPR(-0.997511456140303459699448390), new FalconFPR(0.070504573389613863027351471),
            new FalconFPR(0.997060070339482978987989949), new FalconFPR(0.076623861392031492278332463),
            new FalconFPR(-0.076623861392031492278332463), new FalconFPR(0.997060070339482978987989949),
            new FalconFPR(0.650846684996380915068975573), new FalconFPR(0.759209188978388033485525443),
            new FalconFPR(-0.759209188978388033485525443), new FalconFPR(0.650846684996380915068975573),
            new FalconFPR(0.891840709392342727796478697), new FalconFPR(0.452349587233770874133026703),
            new FalconFPR(-0.452349587233770874133026703), new FalconFPR(0.891840709392342727796478697),
            new FalconFPR(0.310767152749611495835997250), new FalconFPR(0.950486073949481721759926101),
            new FalconFPR(-0.950486073949481721759926101), new FalconFPR(0.310767152749611495835997250),
            new FalconFPR(0.962953266873683886347921481), new FalconFPR(0.269668325572915106525464462),
            new FalconFPR(-0.269668325572915106525464462), new FalconFPR(0.962953266873683886347921481),
            new FalconFPR(0.490226483288291154229598449), new FalconFPR(0.871595086655951034842481435),
            new FalconFPR(-0.871595086655951034842481435), new FalconFPR(0.490226483288291154229598449),
            new FalconFPR(0.786455213599085757522319464), new FalconFPR(0.617647307937803932403979402),
            new FalconFPR(-0.617647307937803932403979402), new FalconFPR(0.786455213599085757522319464),
            new FalconFPR(0.119365214810991364593637790), new FalconFPR(0.992850414459865090793563344),
            new FalconFPR(-0.992850414459865090793563344), new FalconFPR(0.119365214810991364593637790),
            new FalconFPR(0.984748501801904218556553176), new FalconFPR(0.173983873387463827950700807),
            new FalconFPR(-0.173983873387463827950700807), new FalconFPR(0.984748501801904218556553176),
            new FalconFPR(0.573297166698042212820171239), new FalconFPR(0.819347520076796960824689637),
            new FalconFPR(-0.819347520076796960824689637), new FalconFPR(0.573297166698042212820171239),
            new FalconFPR(0.843208239641845437161743865), new FalconFPR(0.537587076295645482502214932),
            new FalconFPR(-0.537587076295645482502214932), new FalconFPR(0.843208239641845437161743865),
            new FalconFPR(0.216106797076219509948385131), new FalconFPR(0.976369731330021149312732194),
            new FalconFPR(-0.976369731330021149312732194), new FalconFPR(0.216106797076219509948385131),
            new FalconFPR(0.931884265581668106718557199), new FalconFPR(0.362755724367397216204854462),
            new FalconFPR(-0.362755724367397216204854462), new FalconFPR(0.931884265581668106718557199),
            new FalconFPR(0.402434650859418441082533934), new FalconFPR(0.915448716088267819566431292),
            new FalconFPR(-0.915448716088267819566431292), new FalconFPR(0.402434650859418441082533934),
            new FalconFPR(0.722128193929215321243607198), new FalconFPR(0.691759258364157774906734132),
            new FalconFPR(-0.691759258364157774906734132), new FalconFPR(0.722128193929215321243607198),
            new FalconFPR(0.021474080275469507418374898), new FalconFPR(0.999769405351215321657617036),
            new FalconFPR(-0.999769405351215321657617036), new FalconFPR(0.021474080275469507418374898),
            new FalconFPR(0.999882347454212525633049627), new FalconFPR(0.015339206284988101044151868),
            new FalconFPR(-0.015339206284988101044151868), new FalconFPR(0.999882347454212525633049627),
            new FalconFPR(0.696177131491462944788582591), new FalconFPR(0.717870045055731736211325329),
            new FalconFPR(-0.717870045055731736211325329), new FalconFPR(0.696177131491462944788582591),
            new FalconFPR(0.917900775621390457642276297), new FalconFPR(0.396809987416710328595290911),
            new FalconFPR(-0.396809987416710328595290911), new FalconFPR(0.917900775621390457642276297),
            new FalconFPR(0.368466829953372331712746222), new FalconFPR(0.929640895843181265457918066),
            new FalconFPR(-0.929640895843181265457918066), new FalconFPR(0.368466829953372331712746222),
            new FalconFPR(0.977677357824509979943404762), new FalconFPR(0.210111836880469621717489972),
            new FalconFPR(-0.210111836880469621717489972), new FalconFPR(0.977677357824509979943404762),
            new FalconFPR(0.542750784864515906586768661), new FalconFPR(0.839893794195999504583383987),
            new FalconFPR(-0.839893794195999504583383987), new FalconFPR(0.542750784864515906586768661),
            new FalconFPR(0.822849781375826332046780034), new FalconFPR(0.568258952670131549790548489),
            new FalconFPR(-0.568258952670131549790548489), new FalconFPR(0.822849781375826332046780034),
            new FalconFPR(0.180022901405699522679906590), new FalconFPR(0.983662419211730274396237776),
            new FalconFPR(-0.983662419211730274396237776), new FalconFPR(0.180022901405699522679906590),
            new FalconFPR(0.993564135520595333782021697), new FalconFPR(0.113270952177564349018228733),
            new FalconFPR(-0.113270952177564349018228733), new FalconFPR(0.993564135520595333782021697),
            new FalconFPR(0.622461279374149972519166721), new FalconFPR(0.782650596166575738458949301),
            new FalconFPR(-0.782650596166575738458949301), new FalconFPR(0.622461279374149972519166721),
            new FalconFPR(0.874586652278176112634431897), new FalconFPR(0.484869248000791101822951699),
            new FalconFPR(-0.484869248000791101822951699), new FalconFPR(0.874586652278176112634431897),
            new FalconFPR(0.275571819310958163076425168), new FalconFPR(0.961280485811320641748659653),
            new FalconFPR(-0.961280485811320641748659653), new FalconFPR(0.275571819310958163076425168),
            new FalconFPR(0.952375012719765858529893608), new FalconFPR(0.304929229735402406490728633),
            new FalconFPR(-0.304929229735402406490728633), new FalconFPR(0.952375012719765858529893608),
            new FalconFPR(0.457813303598877221904961155), new FalconFPR(0.889048355854664562540777729),
            new FalconFPR(-0.889048355854664562540777729), new FalconFPR(0.457813303598877221904961155),
            new FalconFPR(0.763188417263381271704838297), new FalconFPR(0.646176012983316364832802220),
            new FalconFPR(-0.646176012983316364832802220), new FalconFPR(0.763188417263381271704838297),
            new FalconFPR(0.082740264549375693111987083), new FalconFPR(0.996571145790554847093566910),
            new FalconFPR(-0.996571145790554847093566910), new FalconFPR(0.082740264549375693111987083),
            new FalconFPR(0.997925286198596012623025462), new FalconFPR(0.064382630929857460819324537),
            new FalconFPR(-0.064382630929857460819324537), new FalconFPR(0.997925286198596012623025462),
            new FalconFPR(0.660114342067420478559490747), new FalconFPR(0.751165131909686411205819422),
            new FalconFPR(-0.751165131909686411205819422), new FalconFPR(0.660114342067420478559490747),
            new FalconFPR(0.897324580705418281231391836), new FalconFPR(0.441371268731716692879988968),
            new FalconFPR(-0.441371268731716692879988968), new FalconFPR(0.897324580705418281231391836),
            new FalconFPR(0.322407678801069848384807478), new FalconFPR(0.946600913083283570044599823),
            new FalconFPR(-0.946600913083283570044599823), new FalconFPR(0.322407678801069848384807478),
            new FalconFPR(0.966190003445412555433832961), new FalconFPR(0.257831102162159005614471295),
            new FalconFPR(-0.257831102162159005614471295), new FalconFPR(0.966190003445412555433832961),
            new FalconFPR(0.500885382611240786241285004), new FalconFPR(0.865513624090569082825488358),
            new FalconFPR(-0.865513624090569082825488358), new FalconFPR(0.500885382611240786241285004),
            new FalconFPR(0.793975477554337164895083757), new FalconFPR(0.607949784967773667243642671),
            new FalconFPR(-0.607949784967773667243642671), new FalconFPR(0.793975477554337164895083757),
            new FalconFPR(0.131540028702883111103387493), new FalconFPR(0.991310859846115418957349799),
            new FalconFPR(-0.991310859846115418957349799), new FalconFPR(0.131540028702883111103387493),
            new FalconFPR(0.986809401814185476970235952), new FalconFPR(0.161886393780111837641387995),
            new FalconFPR(-0.161886393780111837641387995), new FalconFPR(0.986809401814185476970235952),
            new FalconFPR(0.583308652937698294392830961), new FalconFPR(0.812250586585203913049744181),
            new FalconFPR(-0.812250586585203913049744181), new FalconFPR(0.583308652937698294392830961),
            new FalconFPR(0.849741768000852489471268395), new FalconFPR(0.527199134781901348464274575),
            new FalconFPR(-0.527199134781901348464274575), new FalconFPR(0.849741768000852489471268395),
            new FalconFPR(0.228072083170885739254457379), new FalconFPR(0.973644249650811925318383912),
            new FalconFPR(-0.973644249650811925318383912), new FalconFPR(0.228072083170885739254457379),
            new FalconFPR(0.936265667170278246576310996), new FalconFPR(0.351292756085567125601307623),
            new FalconFPR(-0.351292756085567125601307623), new FalconFPR(0.936265667170278246576310996),
            new FalconFPR(0.413638312238434547471944324), new FalconFPR(0.910441292258067196934095369),
            new FalconFPR(-0.910441292258067196934095369), new FalconFPR(0.413638312238434547471944324),
            new FalconFPR(0.730562769227827561177758850), new FalconFPR(0.682845546385248068164596123),
            new FalconFPR(-0.682845546385248068164596123), new FalconFPR(0.730562769227827561177758850),
            new FalconFPR(0.033741171851377584833716112), new FalconFPR(0.999430604555461772019008327),
            new FalconFPR(-0.999430604555461772019008327), new FalconFPR(0.033741171851377584833716112),
            new FalconFPR(0.999204758618363895492950001), new FalconFPR(0.039872927587739811128578738),
            new FalconFPR(-0.039872927587739811128578738), new FalconFPR(0.999204758618363895492950001),
            new FalconFPR(0.678350043129861486873655042), new FalconFPR(0.734738878095963464563223604),
            new FalconFPR(-0.734738878095963464563223604), new FalconFPR(0.678350043129861486873655042),
            new FalconFPR(0.907886116487666212038681480), new FalconFPR(0.419216888363223956433010020),
            new FalconFPR(-0.419216888363223956433010020), new FalconFPR(0.907886116487666212038681480),
            new FalconFPR(0.345541324963989065539191723), new FalconFPR(0.938403534063108112192420774),
            new FalconFPR(-0.938403534063108112192420774), new FalconFPR(0.345541324963989065539191723),
            new FalconFPR(0.972226497078936305708321144), new FalconFPR(0.234041958583543423191242045),
            new FalconFPR(-0.234041958583543423191242045), new FalconFPR(0.972226497078936305708321144),
            new FalconFPR(0.521975292937154342694258318), new FalconFPR(0.852960604930363657746588082),
            new FalconFPR(-0.852960604930363657746588082), new FalconFPR(0.521975292937154342694258318),
            new FalconFPR(0.808656181588174991946968128), new FalconFPR(0.588281548222645304786439813),
            new FalconFPR(-0.588281548222645304786439813), new FalconFPR(0.808656181588174991946968128),
            new FalconFPR(0.155828397654265235743101486), new FalconFPR(0.987784141644572154230969032),
            new FalconFPR(-0.987784141644572154230969032), new FalconFPR(0.155828397654265235743101486),
            new FalconFPR(0.990485084256457037998682243), new FalconFPR(0.137620121586486044948441663),
            new FalconFPR(-0.137620121586486044948441663), new FalconFPR(0.990485084256457037998682243),
            new FalconFPR(0.603066598540348201693430617), new FalconFPR(0.797690840943391108362662755),
            new FalconFPR(-0.797690840943391108362662755), new FalconFPR(0.603066598540348201693430617),
            new FalconFPR(0.862423956111040538690933878), new FalconFPR(0.506186645345155291048942344),
            new FalconFPR(-0.506186645345155291048942344), new FalconFPR(0.862423956111040538690933878),
            new FalconFPR(0.251897818154216950498106628), new FalconFPR(0.967753837093475465243391912),
            new FalconFPR(-0.967753837093475465243391912), new FalconFPR(0.251897818154216950498106628),
            new FalconFPR(0.944604837261480265659265493), new FalconFPR(0.328209843579092526107916817),
            new FalconFPR(-0.328209843579092526107916817), new FalconFPR(0.944604837261480265659265493),
            new FalconFPR(0.435857079922255491032544080), new FalconFPR(0.900015892016160228714535267),
            new FalconFPR(-0.900015892016160228714535267), new FalconFPR(0.435857079922255491032544080),
            new FalconFPR(0.747100605980180144323078847), new FalconFPR(0.664710978203344868130324985),
            new FalconFPR(-0.664710978203344868130324985), new FalconFPR(0.747100605980180144323078847),
            new FalconFPR(0.058258264500435759613979782), new FalconFPR(0.998301544933892840738782163),
            new FalconFPR(-0.998301544933892840738782163), new FalconFPR(0.058258264500435759613979782),
            new FalconFPR(0.996044700901251989887944810), new FalconFPR(0.088853552582524596561586535),
            new FalconFPR(-0.088853552582524596561586535), new FalconFPR(0.996044700901251989887944810),
            new FalconFPR(0.641481012808583151988739898), new FalconFPR(0.767138911935820381181694573),
            new FalconFPR(-0.767138911935820381181694573), new FalconFPR(0.641481012808583151988739898),
            new FalconFPR(0.886222530148880631647990821), new FalconFPR(0.463259783551860197390719637),
            new FalconFPR(-0.463259783551860197390719637), new FalconFPR(0.886222530148880631647990821),
            new FalconFPR(0.299079826308040476750336973), new FalconFPR(0.954228095109105629780430732),
            new FalconFPR(-0.954228095109105629780430732), new FalconFPR(0.299079826308040476750336973),
            new FalconFPR(0.959571513081984528335528181), new FalconFPR(0.281464937925757984095231007),
            new FalconFPR(-0.281464937925757984095231007), new FalconFPR(0.959571513081984528335528181),
            new FalconFPR(0.479493757660153026679839798), new FalconFPR(0.877545290207261291668470750),
            new FalconFPR(-0.877545290207261291668470750), new FalconFPR(0.479493757660153026679839798),
            new FalconFPR(0.778816512381475953374724325), new FalconFPR(0.627251815495144113509622565),
            new FalconFPR(-0.627251815495144113509622565), new FalconFPR(0.778816512381475953374724325),
            new FalconFPR(0.107172424956808849175529148), new FalconFPR(0.994240449453187946358413442),
            new FalconFPR(-0.994240449453187946358413442), new FalconFPR(0.107172424956808849175529148),
            new FalconFPR(0.982539302287441255907040396), new FalconFPR(0.186055151663446648105438304),
            new FalconFPR(-0.186055151663446648105438304), new FalconFPR(0.982539302287441255907040396),
            new FalconFPR(0.563199344013834115007363772), new FalconFPR(0.826321062845663480311195452),
            new FalconFPR(-0.826321062845663480311195452), new FalconFPR(0.563199344013834115007363772),
            new FalconFPR(0.836547727223511984524285790), new FalconFPR(0.547894059173100165608820571),
            new FalconFPR(-0.547894059173100165608820571), new FalconFPR(0.836547727223511984524285790),
            new FalconFPR(0.204108966092816874181696950), new FalconFPR(0.978948175319062194715480124),
            new FalconFPR(-0.978948175319062194715480124), new FalconFPR(0.204108966092816874181696950),
            new FalconFPR(0.927362525650401087274536959), new FalconFPR(0.374164062971457997104393020),
            new FalconFPR(-0.374164062971457997104393020), new FalconFPR(0.927362525650401087274536959),
            new FalconFPR(0.391170384302253888687512949), new FalconFPR(0.920318276709110566440076541),
            new FalconFPR(-0.920318276709110566440076541), new FalconFPR(0.391170384302253888687512949),
            new FalconFPR(0.713584868780793592903125099), new FalconFPR(0.700568793943248366792866380),
            new FalconFPR(-0.700568793943248366792866380), new FalconFPR(0.713584868780793592903125099),
            new FalconFPR(0.009203754782059819315102378), new FalconFPR(0.999957644551963866333120920),
            new FalconFPR(-0.999957644551963866333120920), new FalconFPR(0.009203754782059819315102378),
            new FalconFPR(0.999957644551963866333120920), new FalconFPR(0.009203754782059819315102378),
            new FalconFPR(-0.009203754782059819315102378), new FalconFPR(0.999957644551963866333120920),
            new FalconFPR(0.700568793943248366792866380), new FalconFPR(0.713584868780793592903125099),
            new FalconFPR(-0.713584868780793592903125099), new FalconFPR(0.700568793943248366792866380),
            new FalconFPR(0.920318276709110566440076541), new FalconFPR(0.391170384302253888687512949),
            new FalconFPR(-0.391170384302253888687512949), new FalconFPR(0.920318276709110566440076541),
            new FalconFPR(0.374164062971457997104393020), new FalconFPR(0.927362525650401087274536959),
            new FalconFPR(-0.927362525650401087274536959), new FalconFPR(0.374164062971457997104393020),
            new FalconFPR(0.978948175319062194715480124), new FalconFPR(0.204108966092816874181696950),
            new FalconFPR(-0.204108966092816874181696950), new FalconFPR(0.978948175319062194715480124),
            new FalconFPR(0.547894059173100165608820571), new FalconFPR(0.836547727223511984524285790),
            new FalconFPR(-0.836547727223511984524285790), new FalconFPR(0.547894059173100165608820571),
            new FalconFPR(0.826321062845663480311195452), new FalconFPR(0.563199344013834115007363772),
            new FalconFPR(-0.563199344013834115007363772), new FalconFPR(0.826321062845663480311195452),
            new FalconFPR(0.186055151663446648105438304), new FalconFPR(0.982539302287441255907040396),
            new FalconFPR(-0.982539302287441255907040396), new FalconFPR(0.186055151663446648105438304),
            new FalconFPR(0.994240449453187946358413442), new FalconFPR(0.107172424956808849175529148),
            new FalconFPR(-0.107172424956808849175529148), new FalconFPR(0.994240449453187946358413442),
            new FalconFPR(0.627251815495144113509622565), new FalconFPR(0.778816512381475953374724325),
            new FalconFPR(-0.778816512381475953374724325), new FalconFPR(0.627251815495144113509622565),
            new FalconFPR(0.877545290207261291668470750), new FalconFPR(0.479493757660153026679839798),
            new FalconFPR(-0.479493757660153026679839798), new FalconFPR(0.877545290207261291668470750),
            new FalconFPR(0.281464937925757984095231007), new FalconFPR(0.959571513081984528335528181),
            new FalconFPR(-0.959571513081984528335528181), new FalconFPR(0.281464937925757984095231007),
            new FalconFPR(0.954228095109105629780430732), new FalconFPR(0.299079826308040476750336973),
            new FalconFPR(-0.299079826308040476750336973), new FalconFPR(0.954228095109105629780430732),
            new FalconFPR(0.463259783551860197390719637), new FalconFPR(0.886222530148880631647990821),
            new FalconFPR(-0.886222530148880631647990821), new FalconFPR(0.463259783551860197390719637),
            new FalconFPR(0.767138911935820381181694573), new FalconFPR(0.641481012808583151988739898),
            new FalconFPR(-0.641481012808583151988739898), new FalconFPR(0.767138911935820381181694573),
            new FalconFPR(0.088853552582524596561586535), new FalconFPR(0.996044700901251989887944810),
            new FalconFPR(-0.996044700901251989887944810), new FalconFPR(0.088853552582524596561586535),
            new FalconFPR(0.998301544933892840738782163), new FalconFPR(0.058258264500435759613979782),
            new FalconFPR(-0.058258264500435759613979782), new FalconFPR(0.998301544933892840738782163),
            new FalconFPR(0.664710978203344868130324985), new FalconFPR(0.747100605980180144323078847),
            new FalconFPR(-0.747100605980180144323078847), new FalconFPR(0.664710978203344868130324985),
            new FalconFPR(0.900015892016160228714535267), new FalconFPR(0.435857079922255491032544080),
            new FalconFPR(-0.435857079922255491032544080), new FalconFPR(0.900015892016160228714535267),
            new FalconFPR(0.328209843579092526107916817), new FalconFPR(0.944604837261480265659265493),
            new FalconFPR(-0.944604837261480265659265493), new FalconFPR(0.328209843579092526107916817),
            new FalconFPR(0.967753837093475465243391912), new FalconFPR(0.251897818154216950498106628),
            new FalconFPR(-0.251897818154216950498106628), new FalconFPR(0.967753837093475465243391912),
            new FalconFPR(0.506186645345155291048942344), new FalconFPR(0.862423956111040538690933878),
            new FalconFPR(-0.862423956111040538690933878), new FalconFPR(0.506186645345155291048942344),
            new FalconFPR(0.797690840943391108362662755), new FalconFPR(0.603066598540348201693430617),
            new FalconFPR(-0.603066598540348201693430617), new FalconFPR(0.797690840943391108362662755),
            new FalconFPR(0.137620121586486044948441663), new FalconFPR(0.990485084256457037998682243),
            new FalconFPR(-0.990485084256457037998682243), new FalconFPR(0.137620121586486044948441663),
            new FalconFPR(0.987784141644572154230969032), new FalconFPR(0.155828397654265235743101486),
            new FalconFPR(-0.155828397654265235743101486), new FalconFPR(0.987784141644572154230969032),
            new FalconFPR(0.588281548222645304786439813), new FalconFPR(0.808656181588174991946968128),
            new FalconFPR(-0.808656181588174991946968128), new FalconFPR(0.588281548222645304786439813),
            new FalconFPR(0.852960604930363657746588082), new FalconFPR(0.521975292937154342694258318),
            new FalconFPR(-0.521975292937154342694258318), new FalconFPR(0.852960604930363657746588082),
            new FalconFPR(0.234041958583543423191242045), new FalconFPR(0.972226497078936305708321144),
            new FalconFPR(-0.972226497078936305708321144), new FalconFPR(0.234041958583543423191242045),
            new FalconFPR(0.938403534063108112192420774), new FalconFPR(0.345541324963989065539191723),
            new FalconFPR(-0.345541324963989065539191723), new FalconFPR(0.938403534063108112192420774),
            new FalconFPR(0.419216888363223956433010020), new FalconFPR(0.907886116487666212038681480),
            new FalconFPR(-0.907886116487666212038681480), new FalconFPR(0.419216888363223956433010020),
            new FalconFPR(0.734738878095963464563223604), new FalconFPR(0.678350043129861486873655042),
            new FalconFPR(-0.678350043129861486873655042), new FalconFPR(0.734738878095963464563223604),
            new FalconFPR(0.039872927587739811128578738), new FalconFPR(0.999204758618363895492950001),
            new FalconFPR(-0.999204758618363895492950001), new FalconFPR(0.039872927587739811128578738),
            new FalconFPR(0.999430604555461772019008327), new FalconFPR(0.033741171851377584833716112),
            new FalconFPR(-0.033741171851377584833716112), new FalconFPR(0.999430604555461772019008327),
            new FalconFPR(0.682845546385248068164596123), new FalconFPR(0.730562769227827561177758850),
            new FalconFPR(-0.730562769227827561177758850), new FalconFPR(0.682845546385248068164596123),
            new FalconFPR(0.910441292258067196934095369), new FalconFPR(0.413638312238434547471944324),
            new FalconFPR(-0.413638312238434547471944324), new FalconFPR(0.910441292258067196934095369),
            new FalconFPR(0.351292756085567125601307623), new FalconFPR(0.936265667170278246576310996),
            new FalconFPR(-0.936265667170278246576310996), new FalconFPR(0.351292756085567125601307623),
            new FalconFPR(0.973644249650811925318383912), new FalconFPR(0.228072083170885739254457379),
            new FalconFPR(-0.228072083170885739254457379), new FalconFPR(0.973644249650811925318383912),
            new FalconFPR(0.527199134781901348464274575), new FalconFPR(0.849741768000852489471268395),
            new FalconFPR(-0.849741768000852489471268395), new FalconFPR(0.527199134781901348464274575),
            new FalconFPR(0.812250586585203913049744181), new FalconFPR(0.583308652937698294392830961),
            new FalconFPR(-0.583308652937698294392830961), new FalconFPR(0.812250586585203913049744181),
            new FalconFPR(0.161886393780111837641387995), new FalconFPR(0.986809401814185476970235952),
            new FalconFPR(-0.986809401814185476970235952), new FalconFPR(0.161886393780111837641387995),
            new FalconFPR(0.991310859846115418957349799), new FalconFPR(0.131540028702883111103387493),
            new FalconFPR(-0.131540028702883111103387493), new FalconFPR(0.991310859846115418957349799),
            new FalconFPR(0.607949784967773667243642671), new FalconFPR(0.793975477554337164895083757),
            new FalconFPR(-0.793975477554337164895083757), new FalconFPR(0.607949784967773667243642671),
            new FalconFPR(0.865513624090569082825488358), new FalconFPR(0.500885382611240786241285004),
            new FalconFPR(-0.500885382611240786241285004), new FalconFPR(0.865513624090569082825488358),
            new FalconFPR(0.257831102162159005614471295), new FalconFPR(0.966190003445412555433832961),
            new FalconFPR(-0.966190003445412555433832961), new FalconFPR(0.257831102162159005614471295),
            new FalconFPR(0.946600913083283570044599823), new FalconFPR(0.322407678801069848384807478),
            new FalconFPR(-0.322407678801069848384807478), new FalconFPR(0.946600913083283570044599823),
            new FalconFPR(0.441371268731716692879988968), new FalconFPR(0.897324580705418281231391836),
            new FalconFPR(-0.897324580705418281231391836), new FalconFPR(0.441371268731716692879988968),
            new FalconFPR(0.751165131909686411205819422), new FalconFPR(0.660114342067420478559490747),
            new FalconFPR(-0.660114342067420478559490747), new FalconFPR(0.751165131909686411205819422),
            new FalconFPR(0.064382630929857460819324537), new FalconFPR(0.997925286198596012623025462),
            new FalconFPR(-0.997925286198596012623025462), new FalconFPR(0.064382630929857460819324537),
            new FalconFPR(0.996571145790554847093566910), new FalconFPR(0.082740264549375693111987083),
            new FalconFPR(-0.082740264549375693111987083), new FalconFPR(0.996571145790554847093566910),
            new FalconFPR(0.646176012983316364832802220), new FalconFPR(0.763188417263381271704838297),
            new FalconFPR(-0.763188417263381271704838297), new FalconFPR(0.646176012983316364832802220),
            new FalconFPR(0.889048355854664562540777729), new FalconFPR(0.457813303598877221904961155),
            new FalconFPR(-0.457813303598877221904961155), new FalconFPR(0.889048355854664562540777729),
            new FalconFPR(0.304929229735402406490728633), new FalconFPR(0.952375012719765858529893608),
            new FalconFPR(-0.952375012719765858529893608), new FalconFPR(0.304929229735402406490728633),
            new FalconFPR(0.961280485811320641748659653), new FalconFPR(0.275571819310958163076425168),
            new FalconFPR(-0.275571819310958163076425168), new FalconFPR(0.961280485811320641748659653),
            new FalconFPR(0.484869248000791101822951699), new FalconFPR(0.874586652278176112634431897),
            new FalconFPR(-0.874586652278176112634431897), new FalconFPR(0.484869248000791101822951699),
            new FalconFPR(0.782650596166575738458949301), new FalconFPR(0.622461279374149972519166721),
            new FalconFPR(-0.622461279374149972519166721), new FalconFPR(0.782650596166575738458949301),
            new FalconFPR(0.113270952177564349018228733), new FalconFPR(0.993564135520595333782021697),
            new FalconFPR(-0.993564135520595333782021697), new FalconFPR(0.113270952177564349018228733),
            new FalconFPR(0.983662419211730274396237776), new FalconFPR(0.180022901405699522679906590),
            new FalconFPR(-0.180022901405699522679906590), new FalconFPR(0.983662419211730274396237776),
            new FalconFPR(0.568258952670131549790548489), new FalconFPR(0.822849781375826332046780034),
            new FalconFPR(-0.822849781375826332046780034), new FalconFPR(0.568258952670131549790548489),
            new FalconFPR(0.839893794195999504583383987), new FalconFPR(0.542750784864515906586768661),
            new FalconFPR(-0.542750784864515906586768661), new FalconFPR(0.839893794195999504583383987),
            new FalconFPR(0.210111836880469621717489972), new FalconFPR(0.977677357824509979943404762),
            new FalconFPR(-0.977677357824509979943404762), new FalconFPR(0.210111836880469621717489972),
            new FalconFPR(0.929640895843181265457918066), new FalconFPR(0.368466829953372331712746222),
            new FalconFPR(-0.368466829953372331712746222), new FalconFPR(0.929640895843181265457918066),
            new FalconFPR(0.396809987416710328595290911), new FalconFPR(0.917900775621390457642276297),
            new FalconFPR(-0.917900775621390457642276297), new FalconFPR(0.396809987416710328595290911),
            new FalconFPR(0.717870045055731736211325329), new FalconFPR(0.696177131491462944788582591),
            new FalconFPR(-0.696177131491462944788582591), new FalconFPR(0.717870045055731736211325329),
            new FalconFPR(0.015339206284988101044151868), new FalconFPR(0.999882347454212525633049627),
            new FalconFPR(-0.999882347454212525633049627), new FalconFPR(0.015339206284988101044151868),
            new FalconFPR(0.999769405351215321657617036), new FalconFPR(0.021474080275469507418374898),
            new FalconFPR(-0.021474080275469507418374898), new FalconFPR(0.999769405351215321657617036),
            new FalconFPR(0.691759258364157774906734132), new FalconFPR(0.722128193929215321243607198),
            new FalconFPR(-0.722128193929215321243607198), new FalconFPR(0.691759258364157774906734132),
            new FalconFPR(0.915448716088267819566431292), new FalconFPR(0.402434650859418441082533934),
            new FalconFPR(-0.402434650859418441082533934), new FalconFPR(0.915448716088267819566431292),
            new FalconFPR(0.362755724367397216204854462), new FalconFPR(0.931884265581668106718557199),
            new FalconFPR(-0.931884265581668106718557199), new FalconFPR(0.362755724367397216204854462),
            new FalconFPR(0.976369731330021149312732194), new FalconFPR(0.216106797076219509948385131),
            new FalconFPR(-0.216106797076219509948385131), new FalconFPR(0.976369731330021149312732194),
            new FalconFPR(0.537587076295645482502214932), new FalconFPR(0.843208239641845437161743865),
            new FalconFPR(-0.843208239641845437161743865), new FalconFPR(0.537587076295645482502214932),
            new FalconFPR(0.819347520076796960824689637), new FalconFPR(0.573297166698042212820171239),
            new FalconFPR(-0.573297166698042212820171239), new FalconFPR(0.819347520076796960824689637),
            new FalconFPR(0.173983873387463827950700807), new FalconFPR(0.984748501801904218556553176),
            new FalconFPR(-0.984748501801904218556553176), new FalconFPR(0.173983873387463827950700807),
            new FalconFPR(0.992850414459865090793563344), new FalconFPR(0.119365214810991364593637790),
            new FalconFPR(-0.119365214810991364593637790), new FalconFPR(0.992850414459865090793563344),
            new FalconFPR(0.617647307937803932403979402), new FalconFPR(0.786455213599085757522319464),
            new FalconFPR(-0.786455213599085757522319464), new FalconFPR(0.617647307937803932403979402),
            new FalconFPR(0.871595086655951034842481435), new FalconFPR(0.490226483288291154229598449),
            new FalconFPR(-0.490226483288291154229598449), new FalconFPR(0.871595086655951034842481435),
            new FalconFPR(0.269668325572915106525464462), new FalconFPR(0.962953266873683886347921481),
            new FalconFPR(-0.962953266873683886347921481), new FalconFPR(0.269668325572915106525464462),
            new FalconFPR(0.950486073949481721759926101), new FalconFPR(0.310767152749611495835997250),
            new FalconFPR(-0.310767152749611495835997250), new FalconFPR(0.950486073949481721759926101),
            new FalconFPR(0.452349587233770874133026703), new FalconFPR(0.891840709392342727796478697),
            new FalconFPR(-0.891840709392342727796478697), new FalconFPR(0.452349587233770874133026703),
            new FalconFPR(0.759209188978388033485525443), new FalconFPR(0.650846684996380915068975573),
            new FalconFPR(-0.650846684996380915068975573), new FalconFPR(0.759209188978388033485525443),
            new FalconFPR(0.076623861392031492278332463), new FalconFPR(0.997060070339482978987989949),
            new FalconFPR(-0.997060070339482978987989949), new FalconFPR(0.076623861392031492278332463),
            new FalconFPR(0.997511456140303459699448390), new FalconFPR(0.070504573389613863027351471),
            new FalconFPR(-0.070504573389613863027351471), new FalconFPR(0.997511456140303459699448390),
            new FalconFPR(0.655492852999615385312679701), new FalconFPR(0.755201376896536527598710756),
            new FalconFPR(-0.755201376896536527598710756), new FalconFPR(0.655492852999615385312679701),
            new FalconFPR(0.894599485631382678433072126), new FalconFPR(0.446868840162374195353044389),
            new FalconFPR(-0.446868840162374195353044389), new FalconFPR(0.894599485631382678433072126),
            new FalconFPR(0.316593375556165867243047035), new FalconFPR(0.948561349915730288158494826),
            new FalconFPR(-0.948561349915730288158494826), new FalconFPR(0.316593375556165867243047035),
            new FalconFPR(0.964589793289812723836432159), new FalconFPR(0.263754678974831383611349322),
            new FalconFPR(-0.263754678974831383611349322), new FalconFPR(0.964589793289812723836432159),
            new FalconFPR(0.495565261825772531150266670), new FalconFPR(0.868570705971340895340449876),
            new FalconFPR(-0.868570705971340895340449876), new FalconFPR(0.495565261825772531150266670),
            new FalconFPR(0.790230221437310055030217152), new FalconFPR(0.612810082429409703935211936),
            new FalconFPR(-0.612810082429409703935211936), new FalconFPR(0.790230221437310055030217152),
            new FalconFPR(0.125454983411546238542336453), new FalconFPR(0.992099313142191757112085445),
            new FalconFPR(-0.992099313142191757112085445), new FalconFPR(0.125454983411546238542336453),
            new FalconFPR(0.985797509167567424700995000), new FalconFPR(0.167938294974731178054745536),
            new FalconFPR(-0.167938294974731178054745536), new FalconFPR(0.985797509167567424700995000),
            new FalconFPR(0.578313796411655563342245019), new FalconFPR(0.815814410806733789010772660),
            new FalconFPR(-0.815814410806733789010772660), new FalconFPR(0.578313796411655563342245019),
            new FalconFPR(0.846490938774052078300544488), new FalconFPR(0.532403127877197971442805218),
            new FalconFPR(-0.532403127877197971442805218), new FalconFPR(0.846490938774052078300544488),
            new FalconFPR(0.222093620973203534094094721), new FalconFPR(0.975025345066994146844913468),
            new FalconFPR(-0.975025345066994146844913468), new FalconFPR(0.222093620973203534094094721),
            new FalconFPR(0.934092550404258914729877883), new FalconFPR(0.357030961233430032614954036),
            new FalconFPR(-0.357030961233430032614954036), new FalconFPR(0.934092550404258914729877883),
            new FalconFPR(0.408044162864978680820747499), new FalconFPR(0.912962190428398164628018233),
            new FalconFPR(-0.912962190428398164628018233), new FalconFPR(0.408044162864978680820747499),
            new FalconFPR(0.726359155084345976817494315), new FalconFPR(0.687315340891759108199186948),
            new FalconFPR(-0.687315340891759108199186948), new FalconFPR(0.726359155084345976817494315),
            new FalconFPR(0.027608145778965741612354872), new FalconFPR(0.999618822495178597116830637),
            new FalconFPR(-0.999618822495178597116830637), new FalconFPR(0.027608145778965741612354872),
            new FalconFPR(0.998941293186856850633930266), new FalconFPR(0.046003182130914628814301788),
            new FalconFPR(-0.046003182130914628814301788), new FalconFPR(0.998941293186856850633930266),
            new FalconFPR(0.673829000378756060917568372), new FalconFPR(0.738887324460615147933116508),
            new FalconFPR(-0.738887324460615147933116508), new FalconFPR(0.673829000378756060917568372),
            new FalconFPR(0.905296759318118774354048329), new FalconFPR(0.424779681209108833357226189),
            new FalconFPR(-0.424779681209108833357226189), new FalconFPR(0.905296759318118774354048329),
            new FalconFPR(0.339776884406826857828825803), new FalconFPR(0.940506070593268323787291309),
            new FalconFPR(-0.940506070593268323787291309), new FalconFPR(0.339776884406826857828825803),
            new FalconFPR(0.970772140728950302138169611), new FalconFPR(0.240003022448741486568922365),
            new FalconFPR(-0.240003022448741486568922365), new FalconFPR(0.970772140728950302138169611),
            new FalconFPR(0.516731799017649881508753876), new FalconFPR(0.856147328375194481019630732),
            new FalconFPR(-0.856147328375194481019630732), new FalconFPR(0.516731799017649881508753876),
            new FalconFPR(0.805031331142963597922659282), new FalconFPR(0.593232295039799808047809426),
            new FalconFPR(-0.593232295039799808047809426), new FalconFPR(0.805031331142963597922659282),
            new FalconFPR(0.149764534677321517229695737), new FalconFPR(0.988721691960323767604516485),
            new FalconFPR(-0.988721691960323767604516485), new FalconFPR(0.149764534677321517229695737),
            new FalconFPR(0.989622017463200834623694454), new FalconFPR(0.143695033150294454819773349),
            new FalconFPR(-0.143695033150294454819773349), new FalconFPR(0.989622017463200834623694454),
            new FalconFPR(0.598160706996342311724958652), new FalconFPR(0.801376171723140219430247777),
            new FalconFPR(-0.801376171723140219430247777), new FalconFPR(0.598160706996342311724958652),
            new FalconFPR(0.859301818357008404783582139), new FalconFPR(0.511468850437970399504391001),
            new FalconFPR(-0.511468850437970399504391001), new FalconFPR(0.859301818357008404783582139),
            new FalconFPR(0.245955050335794611599924709), new FalconFPR(0.969281235356548486048290738),
            new FalconFPR(-0.969281235356548486048290738), new FalconFPR(0.245955050335794611599924709),
            new FalconFPR(0.942573197601446879280758735), new FalconFPR(0.333999651442009404650865481),
            new FalconFPR(-0.333999651442009404650865481), new FalconFPR(0.942573197601446879280758735),
            new FalconFPR(0.430326481340082633908199031), new FalconFPR(0.902673318237258806751502391),
            new FalconFPR(-0.902673318237258806751502391), new FalconFPR(0.430326481340082633908199031),
            new FalconFPR(0.743007952135121693517362293), new FalconFPR(0.669282588346636065720696366),
            new FalconFPR(-0.669282588346636065720696366), new FalconFPR(0.743007952135121693517362293),
            new FalconFPR(0.052131704680283321236358216), new FalconFPR(0.998640218180265222418199049),
            new FalconFPR(-0.998640218180265222418199049), new FalconFPR(0.052131704680283321236358216),
            new FalconFPR(0.995480755491926941769171600), new FalconFPR(0.094963495329638998938034312),
            new FalconFPR(-0.094963495329638998938034312), new FalconFPR(0.995480755491926941769171600),
            new FalconFPR(0.636761861236284230413943435), new FalconFPR(0.771060524261813773200605759),
            new FalconFPR(-0.771060524261813773200605759), new FalconFPR(0.636761861236284230413943435),
            new FalconFPR(0.883363338665731594736308015), new FalconFPR(0.468688822035827933697617870),
            new FalconFPR(-0.468688822035827933697617870), new FalconFPR(0.883363338665731594736308015),
            new FalconFPR(0.293219162694258650606608599), new FalconFPR(0.956045251349996443270479823),
            new FalconFPR(-0.956045251349996443270479823), new FalconFPR(0.293219162694258650606608599),
            new FalconFPR(0.957826413027532890321037029), new FalconFPR(0.287347459544729526477331841),
            new FalconFPR(-0.287347459544729526477331841), new FalconFPR(0.957826413027532890321037029),
            new FalconFPR(0.474100214650550014398580015), new FalconFPR(0.880470889052160770806542929),
            new FalconFPR(-0.880470889052160770806542929), new FalconFPR(0.474100214650550014398580015),
            new FalconFPR(0.774953106594873878359129282), new FalconFPR(0.632018735939809021909403706),
            new FalconFPR(-0.632018735939809021909403706), new FalconFPR(0.774953106594873878359129282),
            new FalconFPR(0.101069862754827824987887585), new FalconFPR(0.994879330794805620591166107),
            new FalconFPR(-0.994879330794805620591166107), new FalconFPR(0.101069862754827824987887585),
            new FalconFPR(0.981379193313754574318224190), new FalconFPR(0.192080397049892441679288205),
            new FalconFPR(-0.192080397049892441679288205), new FalconFPR(0.981379193313754574318224190),
            new FalconFPR(0.558118531220556115693702964), new FalconFPR(0.829761233794523042469023765),
            new FalconFPR(-0.829761233794523042469023765), new FalconFPR(0.558118531220556115693702964),
            new FalconFPR(0.833170164701913186439915922), new FalconFPR(0.553016705580027531764226988),
            new FalconFPR(-0.553016705580027531764226988), new FalconFPR(0.833170164701913186439915922),
            new FalconFPR(0.198098410717953586179324918), new FalconFPR(0.980182135968117392690210009),
            new FalconFPR(-0.980182135968117392690210009), new FalconFPR(0.198098410717953586179324918),
            new FalconFPR(0.925049240782677590302371869), new FalconFPR(0.379847208924051170576281147),
            new FalconFPR(-0.379847208924051170576281147), new FalconFPR(0.925049240782677590302371869),
            new FalconFPR(0.385516053843918864075607949), new FalconFPR(0.922701128333878570437264227),
            new FalconFPR(-0.922701128333878570437264227), new FalconFPR(0.385516053843918864075607949),
            new FalconFPR(0.709272826438865651316533772), new FalconFPR(0.704934080375904908852523758),
            new FalconFPR(-0.704934080375904908852523758), new FalconFPR(0.709272826438865651316533772),
            new FalconFPR(0.003067956762965976270145365), new FalconFPR(0.999995293809576171511580126),
            new FalconFPR(-0.999995293809576171511580126), new FalconFPR(0.003067956762965976270145365)
        };

        p2_tab = new FalconFPR[]{
            new FalconFPR(2.00000000000),
            new FalconFPR(1.00000000000),
            new FalconFPR(0.50000000000),
            new FalconFPR(0.25000000000),
            new FalconFPR(0.12500000000),
            new FalconFPR(0.06250000000),
            new FalconFPR(0.03125000000),
            new FalconFPR(0.01562500000),
            new FalconFPR(0.00781250000),
            new FalconFPR(0.00390625000),
            new FalconFPR(0.00195312500)
        };
    }

    FPREngine()
    {
        this.fpr_q = new FalconFPR(12289.0);
        this.fpr_inverse_of_q = new FalconFPR(1.0 / 12289.0);
        this.fpr_inv_2sqrsigma0 = new FalconFPR(0.150865048875372721532312163019);
        this.fpr_inv_sigma = inv_sigma;
        this.fpr_sigma_min = sigma_min;
        this.fpr_log2 = new FalconFPR(0.69314718055994530941723212146);
        this.fpr_inv_log2 = new FalconFPR(1.4426950408889634073599246810);
        this.fpr_bnorm_max = new FalconFPR(16822.4121);
        this.fpr_zero = new FalconFPR(0.0);
        this.fpr_one = new FalconFPR(1.0);
        this.fpr_two = new FalconFPR(2.0);
        this.fpr_onehalf = new FalconFPR(0.5);
        this.fpr_invsqrt2 = new FalconFPR(0.707106781186547524400844362105);
        this.fpr_invsqrt8 = new FalconFPR(0.353553390593273762200422181052);
        this.fpr_ptwo31 = new FalconFPR(2147483648.0);
        this.fpr_ptwo31m1 = new FalconFPR(2147483647.0);
        this.fpr_mtwo31m1 = new FalconFPR(-2147483647.0);
        this.fpr_ptwo63m1 = new FalconFPR(9223372036854775807.0);
        this.fpr_mtwo63m1 = new FalconFPR(-9223372036854775807.0);
        this.fpr_ptwo63 = new FalconFPR(9223372036854775808.0);
        this.fpr_gm_tab = gm_tab;
        this.fpr_p2_tab = p2_tab;
    }

    FalconFPR FPR(double v)
    {
        FalconFPR x = new FalconFPR(v);
        return x;
    }

    FalconFPR fpr_of(long i)
    {
        return FPR((double)i);
    }

    final FalconFPR fpr_q;
    final FalconFPR fpr_inverse_of_q;
    final FalconFPR fpr_inv_2sqrsigma0;
    final FalconFPR[] fpr_inv_sigma;
    final FalconFPR[] fpr_sigma_min;
    final FalconFPR fpr_log2;
    final FalconFPR fpr_inv_log2;
    final FalconFPR fpr_bnorm_max;
    final FalconFPR fpr_zero;
    final FalconFPR fpr_one;
    final FalconFPR fpr_two;
    final FalconFPR fpr_onehalf;
    final FalconFPR fpr_invsqrt2;
    final FalconFPR fpr_invsqrt8;
    final FalconFPR fpr_ptwo31;
    final FalconFPR fpr_ptwo31m1;
    final FalconFPR fpr_mtwo31m1;
    final FalconFPR fpr_ptwo63m1;
    final FalconFPR fpr_mtwo63m1;
    final FalconFPR fpr_ptwo63;
    final FalconFPR[] fpr_gm_tab;
    final FalconFPR[] fpr_p2_tab;

    long
    fpr_rint(FalconFPR x)
    {
        /*
         * We do not want to use llrint() since it might be not
         * constant-time.
         *
         * Suppose that x >= 0. If x >= 2^52, then it is already an
         * integer. Otherwise, if x < 2^52, then computing x+2^52 will
         * yield a value that will be rounded to the nearest integer
         * with exactly the right rules (round-to-nearest-even).
         *
         * In order to have constant-time processing, we must do the
         * computation for both x >= 0 and x < 0 cases, and use a
         * cast to an integer to access the sign and select the proper
         * value. Such casts also allow us to find out if |x| < 2^52.
         */
        long sx, tx, rp, rn, m;
        int ub;

        sx = (long)(x.v - 1.0);
        tx = (long)x.v;
        rp = (long)(x.v + 4503599627370496.0) - 4503599627370496l;
        rn = (long)(x.v - 4503599627370496.0) + 4503599627370496l;

        /*
         * If tx >= 2^52 or tx < -2^52, then result is tx.
         * Otherwise, if sx >= 0, then result is rp.
         * Otherwise, result is rn. We use the fact that when x is
         * close to 0 (|x| <= 0.25) then both rp and rn are correct;
         * and if x is not close to 0, then trunc(x-1.0) yields the
         * appropriate sign.
         */

        /*
         * Clamp rp to zero if tx < 0.
         * Clamp rn to zero if tx >= 0.
         */
        m = sx >> 63;
        rn &= m;
        rp &= ~m;

        /*
         * Get the 12 upper bits of tx; if they are not all zeros or
         * all ones, then tx >= 2^52 or tx < -2^52, and we clamp both
         * rp and rn to zero. Otherwise, we clamp tx to zero.
         */
        ub = (int)(tx >>> 52);
        m = -(long)((((ub + 1) & 0xFFF) - 2) >>> 31);
        rp &= m;
        rn &= m;
        tx &= ~m;

        /*
         * Only one of tx, rn or rp (at most) can be non-zero at this
         * point.
         */
        return tx | rn | rp;
    }

    long fpr_floor(FalconFPR x)
    {
        long r;

        /*
         * The cast performs a trunc() (rounding toward 0) and thus is
         * wrong by 1 for most negative values. The correction below is
         * constant-time as long as the compiler turns the
         * floating-point conversion result into a 0/1 integer without a
         * conditional branch or another non-constant-time construction.
         * This should hold on all modern architectures with an FPU (and
         * if it is false on a given arch, then chances are that the FPU
         * itself is not constant-time, making the point moot).
         */
        r = (long)x.v;
        return r - (x.v < (double)r ? 1 : 0);
    }

    long
    fpr_trunc(FalconFPR x)
    {
        return (long)x.v;
    }

    FalconFPR
    fpr_add(FalconFPR x, FalconFPR y)
    {
        return FPR(x.v + y.v);
    }

    FalconFPR
    fpr_sub(FalconFPR x, FalconFPR y)
    {
        return FPR(x.v - y.v);
    }

    FalconFPR
    fpr_neg(FalconFPR x)
    {
        return FPR(-x.v);
    }

    FalconFPR
    fpr_half(FalconFPR x)
    {
        return FPR(x.v * 0.5);
    }

    FalconFPR
    fpr_double(FalconFPR x)
    {
        return FPR(x.v + x.v);
    }

    FalconFPR
    fpr_mul(FalconFPR x, FalconFPR y)
    {
        return FPR(x.v * y.v);
    }

    FalconFPR
    fpr_sqr(FalconFPR x)
    {
        return FPR(x.v * x.v);
    }

    FalconFPR
    fpr_inv(FalconFPR x)
    {
        return FPR(1.0 / x.v);
    }

    FalconFPR
    fpr_div(FalconFPR x, FalconFPR y)
    {
        return FPR(x.v / y.v);
    }


    FalconFPR
    fpr_sqrt(FalconFPR x)
    {
        return FPR(Math.sqrt(x.v));
    }

    boolean
    fpr_lt(FalconFPR x, FalconFPR y)
    {
        return x.v < y.v;
    }

    long
    fpr_expm_p63(FalconFPR x, FalconFPR ccs)
    {
        /*
         * Polynomial approximation of exp(-x) is taken from FACCT:
         *   https://eprint.iacr.org/2018/1234
         * Specifically, values are extracted from the implementation
         * referenced from the FACCT article, and available at:
         *   https://github.com/raykzhao/gaussian
         * Tests over more than 24 billions of random inputs in the
         * 0..log(2) range have never shown a deviation larger than
         * 2^(-50) from the true mathematical value.
         */


        /*
         * Normal implementation uses Horner's method, which minimizes
         * the number of operations.
         */

        double d, y;

        d = x.v;
        y = 0.000000002073772366009083061987;
        y = 0.000000025299506379442070029551 - y * d;
        y = 0.000000275607356160477811864927 - y * d;
        y = 0.000002755586350219122514855659 - y * d;
        y = 0.000024801566833585381209939524 - y * d;
        y = 0.000198412739277311890541063977 - y * d;
        y = 0.001388888894063186997887560103 - y * d;
        y = 0.008333333327800835146903501993 - y * d;
        y = 0.041666666666110491190622155955 - y * d;
        y = 0.166666666666984014666397229121 - y * d;
        y = 0.500000000000019206858326015208 - y * d;
        y = 0.999999999999994892974086724280 - y * d;
        y = 1.000000000000000000000000000000 - y * d;
        y *= ccs.v;
        return (long)(y * fpr_ptwo63.v);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy