Skip to content

Commit

Permalink
test code
Browse files Browse the repository at this point in the history
  • Loading branch information
fredrik-johansson committed Jan 26, 2024
1 parent ea32ed8 commit 30e64ae
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 4 deletions.
2 changes: 1 addition & 1 deletion doc/source/mpn_extras.rst
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ Multiplication
is *n + 2* ULP in the returned limb.

.. note:: This function may not exist on processors not supporting the ADX
instruction set.
instruction set.


Divisibility
Expand Down
2 changes: 2 additions & 0 deletions src/fmpz_mat/test/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
#include "t-mul_multi_mod.c"
#include "t-mul_small.c"
#include "t-mul_strassen.c"
#include "t-mul_waksman.c"
#include "t-multi_CRT_ui.c"
#include "t-multi_CRT_ui_unsigned.c"
#include "t-nullspace.c"
Expand Down Expand Up @@ -175,6 +176,7 @@ test_struct tests[] =
TEST_FUNCTION(fmpz_mat_mul_multi_mod),
TEST_FUNCTION(fmpz_mat_mul_small),
TEST_FUNCTION(fmpz_mat_mul_strassen),
TEST_FUNCTION(fmpz_mat_mul_waksman),
TEST_FUNCTION(fmpz_mat_multi_CRT_ui),
TEST_FUNCTION(fmpz_mat_multi_CRT_ui_unsigned),
TEST_FUNCTION(fmpz_mat_nullspace),
Expand Down
6 changes: 3 additions & 3 deletions src/fmpz_mat/test/t-mul_strassen.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ TEST_FUNCTION_START(fmpz_mat_mul_strassen, state)

slong m, k, n;

m = n_randint(state, 150);
k = n_randint(state, 150);
n = n_randint(state, 150);
m = n_randint(state, 20);
k = n_randint(state, 20);
n = n_randint(state, 20);

fmpz_mat_init(A, m, n);
fmpz_mat_init(B, n, k);
Expand Down
58 changes: 58 additions & 0 deletions src/fmpz_mat/test/t-mul_waksman.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
Copyright (C) 2024 Fredrik Johansson
This file is part of FLINT.
FLINT is free software: you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License (LGPL) as published
by the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version. See <https://www.gnu.org/licenses/>.
*/

#include "test_helpers.h"
#include "fmpz_mat.h"

TEST_FUNCTION_START(fmpz_mat_mul_waksman, state)
{
slong i;

for (i = 0; i < 10 * flint_test_multiplier(); i++)
{
fmpz_mat_t A, B, C, D;

slong m, k, n;

m = n_randint(state, 20);
k = n_randint(state, 20);
n = n_randint(state, 20);

fmpz_mat_init(A, m, n);
fmpz_mat_init(B, n, k);
fmpz_mat_init(C, m, k);
fmpz_mat_init(D, m, k);

fmpz_mat_randtest(A, state, n_randint(state, 200) + 1);
fmpz_mat_randtest(B, state, n_randint(state, 200) + 1);

fmpz_mat_mul_classical(C, A, B);
fmpz_mat_mul_waksman(D, A, B);

if (!fmpz_mat_equal(C, D))
{
flint_printf("FAIL: results not equal\n");
fmpz_mat_print_pretty(A);
fmpz_mat_print_pretty(B);
fmpz_mat_print_pretty(C);
fmpz_mat_print_pretty(D);
fflush(stdout);
flint_abort();
}

fmpz_mat_clear(A);
fmpz_mat_clear(B);
fmpz_mat_clear(C);
fmpz_mat_clear(D);
}

TEST_FUNCTION_END(state);
}

0 comments on commit 30e64ae

Please sign in to comment.