aboutsummaryrefslogtreecommitdiffstats
path: root/src/zsqr.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2016-03-15 11:40:46 +0100
committerMattias Andrée <maandree@kth.se>2016-03-15 11:40:46 +0100
commitf3b969b6991f154a1fde1ea6b4488320ed0b486f (patch)
treed17fd525c8bcfed5dd218501214330262efb52c0 /src/zsqr.c
parentOptimisations (diff)
downloadlibzahl-f3b969b6991f154a1fde1ea6b4488320ed0b486f.tar.gz
libzahl-f3b969b6991f154a1fde1ea6b4488320ed0b486f.tar.bz2
libzahl-f3b969b6991f154a1fde1ea6b4488320ed0b486f.tar.xz
Optimise zsetup, zgcd, zmul, and zsqr and add -flto
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/zsqr.c')
-rw-r--r--src/zsqr.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/src/zsqr.c b/src/zsqr.c
index bd03128..68480ba 100644
--- a/src/zsqr.c
+++ b/src/zsqr.c
@@ -42,32 +42,17 @@ zsqr(z_t a, z_t b)
zsplit(high, low, b, m2);
-#if 1
+
zsqr(z0, low);
zsqr(z2, high);
zmul(z1, low, high);
zlsh(z1, z1, m2 + 1);
m2 <<= 1;
- zlsh(z2, z2, m2);
-
- zadd(a, z2, z1);
- zadd(a, a, z0);
-#else
- zsqr(z0, low);
- zsqr(z2, high);
- zmul(z1, low, low);
-
- zlsh(z0, z0, m2 + 1);
- zlsh(z1, z1, m2 + 1);
zlsh(a, z2, m2);
- m2 <<= 1;
- zlsh(z2, z2, m2);
- zadd(z2, z2, a);
+ zadd_unsigned_assign(a, z1);
+ zadd_unsigned_assign(a, z0);
- zsub(a, z2, z1);
- zadd(a, a, z0);
-#endif
zfree(z0);
zfree(z1);