@@ -62,9 +62,9 @@ Types, macros and constants
62
62
NFLOAT_MAX_LIMBS
63
63
64
64
The number of limbs `n` permitted as precision. The current
65
- limits are are `1 \le n \le 33 ` on a 64-bit machine and
66
- `1 \le n \le 66 ` on a 32-bit machine, permitting precision
67
- up to 2112 bits. The upper limit exists so that elements and
65
+ limits are are `1 \le n \le 66 ` on a 64-bit machine and
66
+ `1 \le n \le 132 ` on a 32-bit machine, permitting precision
67
+ up to 4224 bits. The upper limit exists so that elements and
68
68
temporary buffers are safe to allocate on the stack and so that
69
69
simple operations like swapping are not too expensive.
70
70
@@ -84,6 +84,7 @@ Types, macros and constants
84
84
nfloat512_struct
85
85
nfloat1024_struct
86
86
nfloat2048_struct
87
+ nfloat4096_struct
87
88
nfloat64_t
88
89
nfloat128_t
89
90
nfloat192_t
@@ -92,6 +93,7 @@ Types, macros and constants
92
93
nfloat512_t
93
94
nfloat1024_t
94
95
nfloat2048_t
96
+ nfloat4096_t
95
97
96
98
For convenience we define types of the correct structure size for
97
99
some common levels of bit precision. An ``nfloatX_t `` is defined as
@@ -254,6 +256,7 @@ These methods are interchangeable with their ``gr`` counterparts.
254
256
int nfloat_mul(nfloat_ptr res, nfloat_srcptr x, nfloat_srcptr y, gr_ctx_t ctx)
255
257
int nfloat_submul(nfloat_ptr res, nfloat_srcptr x, nfloat_srcptr y, gr_ctx_t ctx)
256
258
int nfloat_addmul(nfloat_ptr res, nfloat_srcptr x, nfloat_srcptr y, gr_ctx_t ctx)
259
+ int nfloat_sqr(nfloat_ptr res, nfloat_srcptr x, gr_ctx_t ctx)
257
260
258
261
.. function :: int nfloat_mul_2exp_si(nfloat_ptr res, nfloat_srcptr x, slong y, gr_ctx_t ctx)
259
262
@@ -329,3 +332,69 @@ Internal functions
329
332
int _nfloat_sub_4(nfloat_ptr res, nn_srcptr x, slong xexp, int xsgnbit, nn_srcptr y, slong delta, gr_ctx_t ctx)
330
333
int _nfloat_add_n(nfloat_ptr res, nn_srcptr xd, slong xexp, int xsgnbit, nn_srcptr yd, slong delta, slong nlimbs, gr_ctx_t ctx)
331
334
int _nfloat_sub_n(nfloat_ptr res, nn_srcptr xd, slong xexp, int xsgnbit, nn_srcptr yd, slong delta, slong nlimbs, gr_ctx_t ctx)
335
+
336
+ Complex numbers
337
+ -------------------------------------------------------------------------------
338
+
339
+ Complex floating-point numbers have the obvious representation as
340
+ real pairs.
341
+
342
+ .. type :: nfloat_complex_ptr
343
+ nfloat_complex_srcptr
344
+
345
+ .. function :: int nfloat_complex_ctx_init(gr_ctx_t ctx, slong prec, int flags)
346
+
347
+ .. macro :: NFLOAT_COMPLEX_CTX_DATA_NLIMBS(ctx)
348
+ NFLOAT_COMPLEX_RE(ptr, ctx)
349
+ NFLOAT_COMPLEX_IM(ptr, ctx)
350
+ NFLOAT_COMPLEX_IS_SPECIAL(x, ctx)
351
+ NFLOAT_COMPLEX_IS_ZERO(x, ctx)
352
+
353
+ .. function :: void nfloat_complex_init(nfloat_complex_ptr res, gr_ctx_t ctx)
354
+ void nfloat_complex_clear(nfloat_complex_ptr res, gr_ctx_t ctx)
355
+ int nfloat_complex_zero(nfloat_complex_ptr res, gr_ctx_t ctx)
356
+ int nfloat_complex_get_acf(acf_t res, nfloat_complex_srcptr x, gr_ctx_t ctx)
357
+ int nfloat_complex_set_acf(nfloat_complex_ptr res, const acf_t x, gr_ctx_t ctx)
358
+ int nfloat_complex_get_acb(acb_t res, nfloat_complex_srcptr x, gr_ctx_t ctx)
359
+ int nfloat_complex_set_acb(nfloat_complex_ptr res, const acb_t x, gr_ctx_t ctx)
360
+ int nfloat_complex_write(gr_stream_t out, nfloat_complex_srcptr x, gr_ctx_t ctx)
361
+ int nfloat_complex_randtest(nfloat_complex_ptr res, flint_rand_t state, gr_ctx_t ctx)
362
+ void nfloat_complex_swap(nfloat_complex_ptr x, nfloat_complex_ptr y, gr_ctx_t ctx)
363
+ int nfloat_complex_set(nfloat_complex_ptr res, nfloat_complex_ptr x, gr_ctx_t ctx)
364
+ int nfloat_complex_one(nfloat_complex_ptr res, gr_ctx_t ctx)
365
+ int nfloat_complex_neg_one(nfloat_complex_ptr res, gr_ctx_t ctx)
366
+ truth_t nfloat_complex_is_zero(nfloat_complex_srcptr x, gr_ctx_t ctx)
367
+ truth_t nfloat_complex_is_one(nfloat_complex_srcptr x, gr_ctx_t ctx)
368
+ truth_t nfloat_complex_is_neg_one(nfloat_complex_srcptr x, gr_ctx_t ctx)
369
+ int nfloat_complex_i(nfloat_complex_ptr res, gr_ctx_t ctx)
370
+ int nfloat_complex_pi(nfloat_complex_ptr res, gr_ctx_t ctx)
371
+ int nfloat_complex_conj(nfloat_complex_ptr res, nfloat_complex_srcptr x, gr_ctx_t ctx)
372
+ int nfloat_complex_re(nfloat_complex_ptr res, nfloat_complex_srcptr x, gr_ctx_t ctx)
373
+ int nfloat_complex_im(nfloat_complex_ptr res, nfloat_complex_srcptr x, gr_ctx_t ctx)
374
+ truth_t nfloat_complex_equal(nfloat_complex_srcptr x, nfloat_complex_srcptr y, gr_ctx_t ctx)
375
+ int nfloat_complex_set_si(nfloat_complex_ptr res, slong x, gr_ctx_t ctx)
376
+ int nfloat_complex_set_ui(nfloat_complex_ptr res, ulong x, gr_ctx_t ctx)
377
+ int nfloat_complex_set_fmpz(nfloat_complex_ptr res, const fmpz_t x, gr_ctx_t ctx)
378
+ int nfloat_complex_set_fmpq(nfloat_complex_ptr res, const fmpq_t x, gr_ctx_t ctx)
379
+ int nfloat_complex_set_d(nfloat_complex_ptr res, double x, gr_ctx_t ctx)
380
+ int nfloat_complex_neg(nfloat_complex_ptr res, nfloat_complex_srcptr x, gr_ctx_t ctx)
381
+ int nfloat_complex_add(nfloat_complex_ptr res, nfloat_complex_srcptr x, nfloat_complex_srcptr y, gr_ctx_t ctx)
382
+ int nfloat_complex_sub(nfloat_complex_ptr res, nfloat_complex_srcptr x, nfloat_complex_srcptr y, gr_ctx_t ctx)
383
+ int _nfloat_complex_sqr_naive(nfloat_ptr res1, nfloat_ptr res2, nfloat_srcptr a, nfloat_srcptr b, gr_ctx_t ctx)
384
+ int _nfloat_complex_sqr_standard(nfloat_ptr res1, nfloat_ptr res2, nfloat_srcptr a, nfloat_srcptr b, gr_ctx_t ctx)
385
+ int _nfloat_complex_sqr_karatsuba(nfloat_ptr res1, nfloat_ptr res2, nfloat_srcptr a, nfloat_srcptr b, gr_ctx_t ctx)
386
+ int _nfloat_complex_sqr(nfloat_ptr res1, nfloat_ptr res2, nfloat_srcptr a, nfloat_srcptr b, gr_ctx_t ctx)
387
+ int nfloat_complex_sqr(nfloat_complex_ptr res, nfloat_complex_srcptr x, gr_ctx_t ctx)
388
+ int _nfloat_complex_mul_naive(nfloat_ptr res1, nfloat_ptr res2, nfloat_srcptr a, nfloat_srcptr b, nfloat_srcptr c, nfloat_srcptr d, gr_ctx_t ctx)
389
+ int _nfloat_complex_mul_standard(nfloat_ptr res1, nfloat_ptr res2, nfloat_srcptr a, nfloat_srcptr b, nfloat_srcptr c, nfloat_srcptr d, gr_ctx_t ctx)
390
+ int _nfloat_complex_mul_karatsuba(nfloat_ptr res1, nfloat_ptr res2, nfloat_srcptr a, nfloat_srcptr b, nfloat_srcptr c, nfloat_srcptr d, gr_ctx_t ctx)
391
+ int nfloat_complex_mul(nfloat_complex_ptr res, nfloat_complex_srcptr x, nfloat_complex_srcptr y, gr_ctx_t ctx)
392
+ int nfloat_complex_inv(nfloat_complex_ptr res, nfloat_complex_srcptr x, gr_ctx_t ctx)
393
+ int nfloat_complex_div(nfloat_complex_ptr res, nfloat_complex_srcptr x, nfloat_complex_srcptr y, gr_ctx_t ctx)
394
+ void _nfloat_complex_vec_init(nfloat_complex_ptr res, slong len, gr_ctx_t ctx)
395
+ void _nfloat_complex_vec_clear(nfloat_complex_ptr res, slong len, gr_ctx_t ctx)
396
+ int _nfloat_complex_vec_zero(nfloat_complex_ptr res, slong len, gr_ctx_t ctx)
397
+ int _nfloat_complex_vec_set(nfloat_complex_ptr res, nfloat_complex_srcptr x, slong len, gr_ctx_t ctx)
398
+ int _nfloat_complex_vec_add(nfloat_complex_ptr res, nfloat_complex_srcptr x, nfloat_complex_srcptr y, slong len, gr_ctx_t ctx)
399
+ int _nfloat_complex_vec_sub(nfloat_complex_ptr res, nfloat_complex_srcptr x, nfloat_complex_srcptr y, slong len, gr_ctx_t ctx)
400
+
0 commit comments