7 static void *sqrt2(cf_t cf
) {
17 x
= cf_new_const(sqrt2
);
18 conv
= cf_new_cf_convergent(x
);
25 EXPECT(!mpz_cmp_ui(p
, 1));
27 EXPECT(!mpz_cmp_ui(q
, 1));
30 EXPECT(!mpz_cmp_ui(p
, 3));
32 EXPECT(!mpz_cmp_ui(q
, 2));
35 EXPECT(!mpz_cmp_ui(p
, 7));
37 EXPECT(!mpz_cmp_ui(q
, 5));
40 EXPECT(!mpz_cmp_ui(p
, 17));
42 EXPECT(!mpz_cmp_ui(q
, 12));
49 x
= cf_new_const(sqrt2
);
52 for (int i
= 0; i
< 4; i
++) mpz_init(z
[i
]);
53 // Identity Mobius transformation.
56 mob
= cf_new_mobius_to_cf(x
, z
);
57 CF_EXPECT_DEC(mob
, "1.4142135623730");
60 x
= cf_new_const(sqrt2
);
62 // Works out to be 1 + sqrt(2).
67 mob
= cf_new_mobius_to_cf(x
, z
);
68 CF_EXPECT_DEC(mob
, "2.4142135623730");
71 for (int i
= 0; i
< 4; i
++) mpz_clear(z
[i
]);