Skip to content

Commit

Permalink
Fix benches + small optimisations and clean ups (#807)
Browse files Browse the repository at this point in the history
* Fix benches + small optimisations and clean ups

* Use bigint's neg

* Use replace

* Simplify

* imports

* typo
  • Loading branch information
jonas-lj committed Jun 18, 2024
1 parent 631bbc2 commit f410858
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 42 deletions.
23 changes: 15 additions & 8 deletions fastcrypto-vdf/benches/vdf.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,36 +45,43 @@ fn verify_single<M: Measurement>(parameters: VerificationInputs, c: &mut Benchma
fn verify(c: &mut Criterion) {
let mut group = c.benchmark_group("VDF verify".to_string());

// Test vectors are created using the following code:
// ```
// let discriminant = Discriminant::try_from(-BigInt::from_str_radix(&parameters.discriminant, 16).unwrap()).unwrap();
// let input = QuadraticForm::generator(&discriminant);
// let (result, proof) = DefaultVDF::new(discriminant.clone(), iterations).evaluate(&input).unwrap();
// ```

//1024 bits
verify_single(VerificationInputs {
iterations: 1000 ,
discriminant: "cd711f181153e08e08e5ba156db0c4e9469de76f2bd6b64f068f5007918727f5eaa5f6a0e090f82682a4ebf87befdea8f1253265d700ee3ca6b0fdb2677c633c7f37b62f0e0c13b402def0ba9abaf15e4c53bfb6bda0c7a0cad4439864af3eb9af6d6c4b10286eb8ff5e2de5b009196bc60c3000fde8d4b89b7674e61bc2d23f".to_string(),
result: "0040256cb7ee900af2bc1f6b48214aeabed12a3afbbdcedc8d5afed7ebaf11493cf4b51522f709b103eae1c03b4b6be9f0cca48be552ac8841326de30c18c611022a00401bb4eec1c0354851d54fbddc71d798dd2d4b7cd3db4042cb83d39d242619289b9291794cee5661e71e43ec6d49e218af7db4fc5ad437af3f0e7006b98e414fb5".to_string(),
proof: "00400e511ea4cd3ca68c803fc325cf02fb05f98e428beb666d7b80b0cd3562b7ef06049b0895472a2c99708381f0e0f2935fa715a2ca6a3baf4d30f1af97e3996542004001acb56024a0094f39e3737862758e9aa379a2cbcd6e1c547839defec353e21a07db12139a9350da58db3f07865433d223cd87ce418ba66cfd00934c55ab5e1f".to_string(),
result: "40704823bbe7ab27b8323113c31796ab1d3b4cfd904ce06bf910031227b3de511a71e6124dbdbe36103dc3dbb9091525477aec163645c1bf5290c2f6cf398cc73940eab47036267ee4ec1f222a38da58ec4291b919b2a51c5feed92d9b5b4a1080e73edc93224fceb0d70b333705d709701fa88ac96f1fbf7bd7b741269bd0d05acf40761c45472ff5f3fcc4334e56b802bd7c7f9f2098a729a2a3e897be0b3717b3363d67c6a4aa81b26b5ce4243c409e4be2d468b515ed1f76fe1c5bf76424aba4a8".to_string(),
proof: "404a31d84c968019d6aadc2b93733ce44161ed08424deae4c1f25ae2778846b8a3f5e1049da383e711dd7cc0c3ff2d84480c3af8d2265536640f84e0bc432dc6d04029a8a68bb5d0b4874bd6f134ef96546f97eb0ea7de639fe6c73c74f4af590dc98b362ee63ac94bd9e071a33d3a79f013ad663f19ce2b84f783862db2d9e1823f4100b70f921bfa9d847f71de0d283e447227554729201161a79ae5c9891dabb141deeef63436298c3f2e4ccfbc5376df661104d76fef0e6611ee7a05c5d14a6c38f3".to_string(),
}, &mut group);

// 2048 bits
verify_single(VerificationInputs {
iterations: 1000,
discriminant: "f6901cd003679e2f451cda55b032fb49222a9b595b9e5948b793d2d7338d4da01937c637739e7f980d481b742c0fdc5255847ccc848359db822ed6ca7f33bdd54a207e24679c9f1f7e64be59e1bed7afbaa999770743984ed997c2c8187b5a80a0df200c040ac152dd6bb3bfdf3a7f151f2ddbd9debf6c841cebdc9f450cb42f51529ba04e6bda874b43461ed104b39257559bed53200d093f8e6c48f2b1c91e15e37ce695924eafd78fa4ba11e519f9a885399264d1a885d353ce128f1e044ef2feda125167e38ad5db7931b752847388c900868bc6bff2d83f7a6e055c618d3abc0ae104520df25508f40323c35d2d992303e12f1ae7bc44ffd5861d9f768f".to_string(),
result: "00802a5242cb58dd6f80ca89e09f79b94a5e1ae6f6def78ca6a863b5628bdb799c1311972122f00a7c59ce83d164e2adc66cb2f96e1006a21cea0daa48351a0127fa9fa9563ff7e191f51a88f8dba994c6878a6dd79282162de6dcf5b3b74bf7ace58f9f51b19697d1322409d78d1765f17ec985c0af25e4e722876370ec27c3fa820080e3adfb5aaa6bf0c6b4c710cef41d7656c3409d92fe287b2a5c6956bc32fed10e7f45374ec851f35b56adda657f3efdefd0d1f7125db0a1d61b25c9112d18206b9c714f0f87ad95e29b2262c1ed2115f4c1d1cc5ae26185271ff4081ef97048c319f3d7651fd6a06a61b8b9f071435c0f329f88b79a03b24c1bfb1492b4a51453".to_string(),
proof: "00806225f36bb72ba4f478f487ff52ca4994a2710e72863b045f8330d7cf2c59613032e02398b6a3e12ec748d6a645e75c7e09d1904ecd919927685ad6449b145ac713e27e078177b16edcb9ec660c283cd681f92dc30dc5593934b6ef321c28d14a9ca968f7310292720014c2370b38213f4ae70760009a35a888ca2f9f3cb7619300801e0b7a624be0889d5b717f3efe67e21d4e899e7acdf29419e77b2e0dbd8108971be3d69e5f06c43a0d51552b15aa1bd8d9bd4c8618e914c7e7cafe58463dbc03c3125f167a71bd893aac6f43e584e9a2f05658a4b4612bb40f12669a1e2c1e81771125481f15292ddd90426a0f995eb5a3676491b780aa8fbb7f0c6c1f51e4c5".to_string(),
result: "800150975db828b2cb0d2acf951ec73d5a9d603510b15a353654bee47b557a0691e3d3adf6ebc44dfd87dc39037722945b9d81ab72d0b8b7e290f25e9ea8a426ea7855276b1239121e2da32381b8a2fe555b73ffb1d7e090a3ad0f187576860bfe3df671eb5dcd4d85cdf68f8866f0c76346c6d07982c2a11a32e1f66ddf70c42212800136d4b31698bda17265b866d44782c6caf91512b12178d7a748084ed220bbc36b0f61dbd9bd1d1548e25c881691d402d5ac6d718c919dac072f255134562a3b3ce9c30235cf0840cf7dba6ddc385a977d3608a1171f144a5405de75db256cfbe64d60a9becde94293e26a9c55cb03eb1708a435a4e8d147e4bc4953372f452677810100cd211babff20059b0ac32c591891f459b0282d99cc59fa1e3d5beda0224a775a5ae083ad912847b1092df93566d2823c98f4ecd3b386a9dec85592c074256159aeb5b849de4f400a28c43c968268b503ae9d9c4d37ac8e21632b8a1f8e53ac8f1303ac77f53ab5327967520b6baef8b7e8b5ef7bf8c94c89d39c334c8884b95c".to_string(),
proof: "8001131dffe919c531eee75e67a30b0d2dadd407fca59ae31d68b1975b1d5fbaff394fc9aae1a554c304377dbede623b94e9d2ddded9185eebb284dd36688c140cf302c34c2430f71e9fa20f7439a168d8a37fed05fbafa5dd534740bcddf9cd2d85e9dabb0c34578243dd343d8afe98368c977c03113e8ac091263785b6a3050ea68001080bcccfe4b6fcfe5f867254e948d74797c87b6867f6e6b08aa3d7bb1faeea983b2247aed245236edef16202d04523aebbd12427aaf82d87448d70f973cc2fe36105449926396025346e35c6d2d50f24bb25711bd0ec03e6a2881971d1a6d3b6fdde96ef170c378fb4964164e7de5576a4e9b2f0c4382780e993a9c998a737878101033a488b23f24d053e803effc0812b36e0c9e5a254f955687aa3fb07780eecb35d2320e1e17c6c082229d7a7ea8e7e8bee3ecf62b5f537a95dad9995410ffc08cfb14f47c8fedfdc1216d5660969e803818a73066716c8d02362ae19acebbff3354e6af3af4e9447d9ebd0df46dd09a7ae155eb0b869026c4f984d4d97313a6128".to_string(),
}, &mut group);

// 2400 bits
verify_single(VerificationInputs {
iterations: 1000,
discriminant: "c3811f4ad2f4a7bdf2ed89385866ad526c6dd3aa942e04c141d0562a8e7b014f08804f47b3c2ecbba0a5a0ad8f4d8e869a10cff13dbc522aea141f6d1c42913f2d3bff8d3e7656c72523a2e9d47f838234bd65f05ef3ca86c2f640bca6630ed8d1da21e30a67f83e25b89c32c2d0dc0bacb81bd971b0932a82d131b4a74bff36b60b66543105da2c3ecb1a4e8c2cb6d47c1e85942cce8f3fc50c27856e6dfbd15c0bd5017fea15ae0eb43dfb32b2d947c3131d1951f00bcc40352eeb65e364551e40d13768f443406760ee6b37a5b5819d3f630c034c7f42212ad49c803772aaafd4cd1f87697c68d5a6b0855f475b370b20058558993e76759caa38edbc82407b4e3559bade5f7479a860ebef62fed82d657765ebb8f7f375c2b78f73669760e4bd4932177087a49a0b68d7".to_string(),
result: "00966b02104b26a5258211aac2d1b9a428b49517b18ad54d53df4a7fa78a187e4e143f382b4beea5884c0ef293e5534ceecdaf589b56a297e01c7d5deee66af343b6591a042ccb04dfe8b90fd6a445f9f8550821936172ad04cd41d786bfe2e05d5c7ac225a5e6de4727f4d44b45b25a3834ecfb2be0cf3e0a3bc399b5776ad866003d163368c009c7cf0ebab3111f9ea7725d916d7569880096123bda1054d8abf8345879fef58f49e896a4c9e705c806524fb213956d9c3d4dbb526452715051dd69a706ca96a5657bd22deef10bc0cfe18c7025142b0541317d7b47e879ae8f00e67830eb5cd3cae7111b3b745240c8dc8dc88422e16e75e78a7b4687d5e9329becd9cbc26f109da7aa0d6c45f4edb87210d7febc06834bfd0f6ed7f261aedfd3bd0c3014bce1222fa43fe06e11ed".to_string(),
proof: "00965f15f1616e2ce2d08825047aeb88deecfb41ac531c7aff0210fd57c9419688d5c05aaf35cff5371377bc739afc8d5aabee7caceecd6d9be5fa84f9f919ac24c3e8ac24b447dc8134aed367d21fdee9de708b43efc8667e4697e7d3afbd74174ac4554e7e0f17a51177a5e7f3418d58aa596e1f3183c0a52b2d5cf667f8c8825f0a84784fefdcffc6e95f142c0c5d54d3ed2a9677b8830096487f31cae27beba43bc003a323846b7531a244508629b304a2dc697252575fa4beaeb8d3f5d5eaa5f00f45be479aabbcf5c09cbce4b026c1d6ab1e2d3c8efdb72d4b5c17475c83c5ba56ffeaae5ddcd79699527e9540e90580df37d9929eab622c57655bfcb65d00d32d900fce4ce98743a516f2a04342de52ed8dd07c136afd89a3767745ab309707473022650b3c772eda27507585".to_string(),
result: "960129b2906c547868b3c04455ee0db11d4cb13bb1241137b1532b800e5d85088e03a082edd21ded9db78a1946fe3c96f01b831f5869a8a2c8ca585372a83377a3094170fc61ee677a0cfd4c2581158a052ca87fda074ab3ad9091a53966e709dc6bdf0776dff21e4b655ec94883d9624ab9bae72cab1dcac525adfae968bec122942c8a64e2cd651a696d0b16d3881e40f635ab6c72eb32960128414179f63cc5b483002e73e390a2f5a7d3180b36649852e2ed1980eacea1af51856ae0cfbfc9c3fdb6167ed57de459e3e701c0b4c2f1a5cafa316d2bb507d02536ca086edf717fdc25be85924a9ec7f60eba8ab5d2e5721a542c814cdb0107e320b1ead81ec716e25b774b6e9e347de019a0437b422381bb9cc54daf457d430577299f1042f18abf51e79cdad0a8b60cfd9f17a09797010135c9c1d72071b19c296c58aa0cd838ba0e1add3ce184d893d36795e17e4c23ab2f8d60a6c3416dc492e98fce7287d539f8c0f6fe1de1908200aed375a2808d625b5480a68aef2fe9a97aed2dd848a4ff4f65b98043fc3633439a25a38ae6b66969f11b26ed386aff638c5e9014cd2741e2f7761084697732f1c0bfca1e78013868e6484dda84ba94b6fdb85bb83f0273439fa30c4e45".to_string(),
proof: "96010af999d107f0ea1b0dc8a9a9a3e7c5300f8d1054005b0a1ab335f4554bb2229fed7a537531e388d89d0439a5ddb9904037e3c517ef5d76fbeeb9c55d322064f7afbb300a359f30e7c416b43f29d19e7b6b6e68b928b37a78b1e2781c0496e1896e8ada5fcfc23ab1b942e9dd62b1dac9d194bf14e815dbae3337751932445a2663fa9c95123fb883bf538d26c72113c49f64abd9296c9601f53661e65560352fb9bce1a91f224eaabb860c45fdd56821d48e0c874a063e19b8be0f8648081a706c4297a9834e7580b0ce2fb857ce7e061c67364fbf095c4d3994ba1f778571dec4b63e5af169c261aa4433ffdb9150126481fdb050302195582171cf3034b47206f047ce4963659b8aa3501acd1517b5c5a19c179743b50ac96228a5603d9e33942b6ce0827b9b6590fd290e408397010476b8bb921b988bf0b7de4ecc9d49bd11ea47f03f8a3e1fa8ae404ded5dd20dcca97e5995ec5d5f8fbf9c1c340a90a738771a9b8e1a9fc3d65a95cfe43e40fbbaa82380d8a04803c1ada0dde0b8d5141fd51e3c0705dabcf4b9eca2562c66694a34777b59eee09063b99560b6135e1fb94209ecce7b4a58aeb36150027a65c6893403afc2496564f498b965fab824a05221089b93889a".to_string(),
}, &mut group);

// 3072 bits
verify_single(VerificationInputs {
iterations: 1000,
discriminant: "ca25a5acb1857bd8defd2c2df2daf2b45c980c7051f325c6c1c988f70c69a1083b2fc2167d5bd49c459a67395c2adf26d2f55076c9e77bd777c1e4b195271f0d76bf4bf763a2b1d05b09627567d44175fcfa02ff7b44688b182aaafa17625c87c219e4855fdc1d574d6a5032fd640c5dc3fc2452ccb3c20e1b859e9a18384935ff94971f221983bc96aa7db8d3f311b45f27de6bd7401a7ffc020742f822089dd8b4c43e6ae1818124156830b0905ccfc2c3a87f999902a15ce5c58c5fd0d07e6fb182c0801c81fecab479b69a0a215f732fff8f15edb166508624549c56a7490358544e1f7e65f687262f005c37f66d44130efa98270abde4ee11e6d4a2ed2a051e943a3503f898f2fdcf2501291240af1520b2b0fe3aaa68448b99f0196ef66e2ebdb53d4269c7a8d3839f519f51276aec12d2983a3ce564af1a6ad81b2c555c963b3ed779c7177fdabaeb132456dc9b1151d367f867f899260d8b7c0fc3bbad1c1731b04a71286362830c5bc0fb37e5e06492e561f4f044d69a71ce41bfbf".to_string(),
result: "00c068915b8f4d32ae5175b1dfa701328a774ee226b7372f6c4ab9d31635d70cae240e06d03934636cfd4a3565deeeec89208652601cdc012a891053396c62be292f1e147a485f2336f1ed74356c980564b071241279f665942ec208f80d6506df50eef8d780f638a5c11d1cbc861cfd83a1483556d002e5dd7e9bf9b6d56f10e02be1067d98498ed7a63fcd9dc086a80d3bf9d62828c8708aa4b19621001e22bb84865a39cfde6a982397ada6c4a912ff84f107cb468d99f49336992980ae29a2f400c0066df5529847d0b2c83b7f48d547c97e95f25350d89b7cf1cbb1e2ca3c87af66f8b882e9900b5f5f4a435e28a726484870677159d1424f2788197f42301dc15c20262e376d26e329b7915449a12be8eb86c5539e10d3ed373fa771404999013fc8e57c117d05edd1ab5fce9a7bbf72cc6724b3a1e55d0dc2e250f3c7447c30eadaaa1b857d000aa2084fc454d7c755f691807a86585a8697c4f42bbba5f2a494c7bb58a12c074696c02c2f9ae072946ffe7f44bf83233b10c34432fc572f46e1".to_string(),
proof: "00c02f59b39416f3f7d4206c589c3df646ce2d62927942b565d7109e8e2f8523604f029b0470b9ce94ee6f0b426f8d6f299a31cfe926bea1c660cc23efabbb0a7853db0c9d13dffeb8e4cdd4862048cbca267f87492053eced3ecee4f9d382378bdb0c44adc847d4c0f09adf08a4e05addd3b22bf2c215c1929669c107c39e4c57ef2be48913ba4e585fef30e38a7f001c53df71dd7d17bb62814ea879d68916c827f1eb209e09a95fa661f6c513c7c979316b3bf5663ed1f1a3f2bd20a07c69c94b00c02709d5517799883520129b148925f3215c6e707bede8fe5a0f1066e09b8b193e79e27e9ce9a9f3001ddb539ba0fc95e77dbc2edea5aa083e88c9bd6e276a687dfdc71ddba3fac21e7768c7e4574078a0203ef3a676c846d7d944e650cfdec6fa6a9953d62dc272b2b20444ca4d8400b639bb6c47c4a2e9e79c68b00dbd5ed9ae7b6a569836099e6aae945accd9a49ee2032bfa26b5d9f12d1254d4a7ad0b8a960f3f9ab7a7d37a8e805e6fb14b2a200f5040436a887f9fe90eac07961d4c6dc7".to_string(),
result: "c0016e09873e2a5b0b19e837f7c6e87361051594c0b20485036e4632f3cd3d5201abbd938103e2f8bc23af68258bdf3a3a86fd7083311235c5037d9c322228a2ebf62b6ec635bd1ab74fb83b1b0175674cf755973b5a29e362c8c6f3691aa6a03a39a760950b94424428239825f172a5c1794fcd76c871e138a46455a9a704c8eb28d255b81a6bc475105a09cb95b6faef6867086c7895679846da3380208d0b66e02a4a2aef53eb30a94efe26cbe4c7c5667af3a0675ce5542cbabfb1efaff7b6dcbf016e18438def5f4ec9f8b59802dc7b47305d96937c2bf9f315e960026dcde8e7ce0401da12c55f18234d2bff8181e0cdc3633fc38c6e42c0da4b1001c2bf6e2cc281b57ab138230fe4347f6f88b659ae35db38ff184171a61122873d21672e8fcda14329f88d6257dd2b7fba4e1b48f6d1818468eaa4a9b2fcf31659df2d809dcb87f7be24990b2ecc796cfe82e5e9cedf7ce41c00b8a398550ddcc4d692364ec31fb40a6b883ba5d210df16a75966c6be547b860598627e2fbe1de6dee03c4fc0017592cf1544ad1220830b6a00e98bdc4f5286d1837662c1ce79c5580b6c8eccaf1ec7e679069dc13afd8fb7968ea81d3d9060bb332f9af673b47851b8849d0880c0f10fb296d84014308a6449604b6ab8ef46b1be195f8f730758ebbee9a6d6b52fd19ce50489e996d2ef8dc7bbdcfea7a4ef8c84dd698e37ca51a9338a711556503f2c98efaf4c364c46dba79d3f58bdab292e9cddee70c27c398209928b41bea11c3ecf2dbb382c63e9e873319cec0f5fef80d1c245e08e40b56b9cf47b020e".to_string(),
proof: "c0016392ef989dc13c16122e00250a3ae9fca3409deafaf9e6aa134899653d1f16d7cd4e153ea89b5dbe72ac2f4d7dceee2630948ae3b0afe0ee74ffd1bf56681ffb13d7e33087e506dab8eddc20cea293812984a54b17f173a7e76e39f55029891a83432c1d938ba99f77f06baddc4e5531ff73755558ba4305490d154483bd76921f800cb4e397f0ad2806f7e7931cee772b94c36b5d48e7d8ddfadd79475318d319313c192aa3c139f3826679d73963caab90d466bd5719b7aebbfb2250128b4cc001a7f85823a0262c22380c822f5dce82228b4f5c1628bb1bf97a92c486e0e29ba1320df0674e7949ffb45dcea7beeb0de90c05053e517395df498a51ef366edbb25239a43240c3a1125234fbe3bc12ed2174fdccd3a78d9309319aa22de674f88920b99e6d18a4c3e0970d1602f80b6d51c9dff54bc673ac0673bed491b55427d3f21eedd4999ffbe5e9c283ce0e387217a1cecd4a945d7b393cab340351ef06769b7e39f799a6584a7166db00b205830e8da5ad74f6f28ce8ac5215c030f927d1c1010095623a2b5bba7474e3d0213010d08e80fc7d43a7448085665bc3e3aaa6f36d712cd04367447618a4e4a66629199537f0cd65ce4e48f182df9046319e7fc973bc7c54c56e4141692010095052818ef1e98b381ba56d509e4c932b4152cae82167d3e6c10df20876013bb2267dead63ef8365a08901fcbf53b747274b5fe7b3d17da8b2985fd3b522770a21e1a3fce4ce97b74b8389764aa101df246cbc2470540ac9f82f1d6a96fc03e753848d150a228e6d7a17cbc0ad95fd2ef9c1ee4bc98a2".to_string(),
}, &mut group);
}

Expand Down
35 changes: 20 additions & 15 deletions fastcrypto-vdf/src/class_group/hash.rs
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
// Copyright (c) 2022, Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0

use crate::class_group::discriminant::Discriminant;
use crate::class_group::QuadraticForm;
use crate::math::crt::solve_congruence_equation_system;
use crate::math::hash_prime::is_probable_prime;
use crate::math::jacobi;
use crate::math::modular_sqrt::modular_square_root;
use fastcrypto::error::FastCryptoError::InvalidInput;
use fastcrypto::error::FastCryptoResult;
use fastcrypto::hash::HashFunction;
use fastcrypto::hash::Sha256;
use std::ops::{AddAssign, ShlAssign, Shr};

use num_bigint::{BigInt, UniformBigInt};
use num_integer::Integer;
use num_traits::Signed;
use rand::distributions::uniform::UniformSampler;
use rand::{Rng, SeedableRng};
use rand_chacha::ChaCha8Rng;
use std::ops::{AddAssign, ShlAssign, Shr};

use fastcrypto::error::FastCryptoError::InvalidInput;
use fastcrypto::error::FastCryptoResult;
use fastcrypto::hash::HashFunction;
use fastcrypto::hash::Sha256;

use crate::class_group::discriminant::Discriminant;
use crate::class_group::QuadraticForm;
use crate::math::crt::solve_congruence_equation_system;
use crate::math::hash_prime::is_probable_prime;
use crate::math::jacobi;
use crate::math::modular_sqrt::modular_square_root;

impl QuadraticForm {
/// Generate a random quadratic form from a seed with the given discriminant. This method is deterministic and it is
Expand Down Expand Up @@ -131,8 +134,9 @@ fn sample_modulus(
break;
}
}
// This only fails if the discriminant is not prime.
let square_root = modular_square_root(discriminant.as_bigint(), &factor, false)
.expect("Legendre symbol checked above");
.map_err(|_| InvalidInput)?;
factors.push(factor);
square_roots.push(square_root);
}
Expand Down Expand Up @@ -169,14 +173,15 @@ fn trial_division(n: &BigInt, divisors: &[u64]) -> bool {

#[cfg(test)]
mod tests {
use crate::class_group::discriminant::Discriminant;
use crate::class_group::QuadraticForm;
use crate::math::parameterized_group::{Parameter, ParameterizedGroupElement};
use num_bigint::BigInt;
use num_traits::Num;
use rand::thread_rng;
use rand::RngCore;

use crate::class_group::discriminant::Discriminant;
use crate::class_group::QuadraticForm;
use crate::math::parameterized_group::{Parameter, ParameterizedGroupElement};

#[test]
fn test_qf_from_seed() {
let mut seed = [0u8; 32];
Expand Down
6 changes: 3 additions & 3 deletions fastcrypto-vdf/src/class_group/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ impl QuadraticForm {
c: w3,
partial_gcd_limit: self.partial_gcd_limit.clone(),
}
.into_reduced()
.reduce()
}
}

Expand Down Expand Up @@ -231,7 +231,7 @@ impl Doubling for QuadraticForm {

let mut u3 = &by * &by;
let mut w3 = &bx * &bx;
let mut v3 = &u3 + &w3 - &(&bx + &by).pow(2);
let mut v3 = -(by * &bx) << 1;

if !iterated {
let dx = (&bx * &capital_dy - w) / &capital_by;
Expand All @@ -254,7 +254,7 @@ impl Doubling for QuadraticForm {
c: w3,
partial_gcd_limit: self.partial_gcd_limit.clone(),
}
.into_reduced()
.reduce()
}
}

Expand Down
Loading

0 comments on commit f410858

Please sign in to comment.