MCPcopy Create free account
hub / github.com/DOSNetwork/core / feInvert

Function feInvert

group/edwards25519/fe.go:860–913  ·  view source on GitHub ↗
(out, z *fieldElement)

Source from the content-addressed store, hash-verified

858}
859
860func feInvert(out, z *fieldElement) {
861 var t0, t1, t2, t3 fieldElement
862 var i int
863
864 feSquare(&t0, z) // 2^1
865 feSquare(&t1, &t0) // 2^2
866 for i = 1; i < 2; i++ { // 2^3
867 feSquare(&t1, &t1)
868 }
869 feMul(&t1, z, &t1) // 2^3 + 2^0
870 feMul(&t0, &t0, &t1) // 2^3 + 2^1 + 2^0
871 feSquare(&t2, &t0) // 2^4 + 2^2 + 2^1
872 feMul(&t1, &t1, &t2) // 2^4 + 2^3 + 2^2 + 2^1 + 2^0
873 feSquare(&t2, &t1) // 5,4,3,2,1
874 for i = 1; i < 5; i++ { // 9,8,7,6,5
875 feSquare(&t2, &t2)
876 }
877 feMul(&t1, &t2, &t1) // 9,8,7,6,5,4,3,2,1,0
878 feSquare(&t2, &t1) // 10..1
879 for i = 1; i < 10; i++ { // 19..10
880 feSquare(&t2, &t2)
881 }
882 feMul(&t2, &t2, &t1) // 19..0
883 feSquare(&t3, &t2) // 20..1
884 for i = 1; i < 20; i++ { // 39..20
885 feSquare(&t3, &t3)
886 }
887 feMul(&t2, &t3, &t2) // 39..0
888 feSquare(&t2, &t2) // 40..1
889 for i = 1; i < 10; i++ { // 49..10
890 feSquare(&t2, &t2)
891 }
892 feMul(&t1, &t2, &t1) // 49..0
893 feSquare(&t2, &t1) // 50..1
894 for i = 1; i < 50; i++ { // 99..50
895 feSquare(&t2, &t2)
896 }
897 feMul(&t2, &t2, &t1) // 99..0
898 feSquare(&t3, &t2) // 100..1
899 for i = 1; i < 100; i++ { // 199..100
900 feSquare(&t3, &t3)
901 }
902 feMul(&t2, &t3, &t2) // 199..0
903 feSquare(&t2, &t2) // 200..1
904 for i = 1; i < 50; i++ { // 249..50
905 feSquare(&t2, &t2)
906 }
907 feMul(&t1, &t2, &t1) // 249..0
908 feSquare(&t1, &t1) // 250..1
909 for i = 1; i < 5; i++ { // 254..5
910 feSquare(&t1, &t1)
911 }
912 feMul(out, &t1, &t0) // 254..5,3,1,0
913}
914
915func fePow22523(out, z *fieldElement) {
916 var t0, t1, t2 fieldElement

Callers 5

ToBytesMethod · 0.85
ToBytesMethod · 0.85
edwardsToMontgomeryXFunction · 0.85
pointToRepFunction · 0.85
repToCurve25519Function · 0.85

Calls 2

feSquareFunction · 0.85
feMulFunction · 0.85

Tested by

no test coverage detected