summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/gmp/examples/printf_example.pas
blob: 9643184b37299162f0f9f212a642bd68dced822f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
program printf_example;

{$mode objfpc}{$H+}

uses
  math, gmp;

const
  N = 2;
  NBITS = 100;

var
  f: mpf_t;
  bits, digits: integer;
begin
  mpf_init2(f, NBITS);
  bits := mpf_get_prec(f);
  digits := floor(bits * LOG_10_2);
  mpf_sqrt_ui(f, N);
  mp_printf('Sqrt(%d) to %d digits (%d bits) = %.*Fg'#10, N, digits, bits, digits, @f);
  mpf_pow_ui(f, f, 2);
  mp_printf('Squared back = %.*Fg'#10, digits, @f);
  mpf_sub_ui(f, f, N);
  mp_printf('Minus %d = %.*Fg'#10, N, digits, @f);
  mpf_clear(f);
end.