Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.
This repository was archived by the owner on Mar 25, 2025. It is now read-only.

Tests failed in the linux system #13

@vivianjeng

Description

@vivianjeng
================================================== test session starts ==================================================
platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /home/ubuntu/MP-SPDZ/path/to/venv/bin/python3
cachedir: .pytest_cache
rootdir: /home/ubuntu/MP-SPDZ
collected 17 items

tests/test_ops.py::test_correlation_success PASSED                                                                [  5%]
tests/test_ops.py::test_covariance_success PASSED                                                                 [ 11%]
tests/test_ops.py::test_geometric_mean_success PASSED                                                             [ 17%]
tests/test_ops.py::test_median_success FAILED                                                                     [ 23%]
tests/test_ops.py::test_where_success PASSED                                                                      [ 29%]
tests/test_ops.py::test_join_success PASSED                                                                       [ 35%]
tests/test_ops.py::test_mode_success PASSED                                                                       [ 41%]
tests/test_ops.py::test_mode_fail_empty_input XFAIL (list index out of range)                                     [ 47%]
tests/test_ops.py::test_mode_fail_all_magic_numbers XFAIL (no mode for empty data)                                [ 52%]
tests/test_ops.py::test_mean_success PASSED                                                                       [ 58%]
tests/test_ops.py::test_variance_success PASSED                                                                   [ 64%]
tests/test_ops.py::test_linear_regression_success FAILED                                                          [ 70%]
tests/test_ops.py::test_harmonic_mean_non_zero_input_success PASSED                                               [ 76%]
tests/test_ops.py::test_harmonic_mean_input_contains_0_success PASSED                                             [ 82%]
tests/test_ops.py::test_pvariance_success PASSED                                                                  [ 88%]
tests/test_ops.py::test_pstdev_success PASSED                                                                     [ 94%]
tests/test_ops.py::test_stdev_success PASSED                                                                      [100%]

======================================================= FAILURES ========================================================

detailed messages:

__________________________________________________ test_median_success __________________________________________________

computation = <function gen_stat_func_comp.<locals>.computation at 0xe69ccf873560>, num_parties = 2
mpc_script = PosixPath('/home/ubuntu/MP-SPDZ/Scripts/semi.sh'), prog = 'testmpc'
cfg = DefaultMPSPDZConfig(round_nearest=True, f=22, k=40)

    def run_mpcstats_func(
        computation,
        num_parties,
        mpc_script,
        prog,
        cfg = DefaultMPSPDZConfig(),
    ):
        def init_and_compute():
            sfix.round_nearest = cfg.round_nearest
            sfix.set_precision(cfg.f, cfg.k)
            computation()

        # compile .x
        compiler = Compiler()
        compiler.register_function(prog)(init_and_compute)
        compiler.compile_func()

        # execute .x
        cmd = f'PLAYERS={num_parties} {mpc_script} {prog}'

        try:
>           res = subprocess.run(cmd, shell=True, capture_output=True, check=True, text=True)

tests/lib.py:81:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

input = None, capture_output = True, timeout = None, check = True
popenargs = ('PLAYERS=2 /home/ubuntu/MP-SPDZ/Scripts/semi.sh testmpc',)
kwargs = {'shell': True, 'stderr': -1, 'stdout': -1, 'text': True}
process = <Popen: returncode: 1 args: 'PLAYERS=2 /home/ubuntu/MP-SPDZ/Scripts/semi.sh ...>
stdout = "Using statistical security parameter 40\nsemi-party.x: ./Protocols/SecureShuffle.hpp:302: void SecureShuffle<SemiShar...emiShare<gfp_<0, 2>>>::configure(int, vector<int> *, int) [T = SemiShare<gfp_<0, 2>>]: Assertion `x[j] == 0' failed.\n"
stderr = 'Running /home/ubuntu/MP-SPDZ/Scripts/../semi-party.x 0 testmpc -pn 19051 -h localhost -N 2\nRunning /home/ubuntu/MP-S...   fi;\nelse\n    if test $i = $front_player; then\n        tee $log;\n    else\n        cat > $log;\n    fi;\nfi; }\n'
retcode = 1

    def run(*popenargs,
            input=None, capture_output=False, timeout=None, check=False, **kwargs):
        """Run command with arguments and return a CompletedProcess instance.

        The returned instance will have attributes args, returncode, stdout and
        stderr. By default, stdout and stderr are not captured, and those attributes
        will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them,
        or pass capture_output=True to capture both.

        If check is True and the exit code was non-zero, it raises a
        CalledProcessError. The CalledProcessError object will have the return code
        in the returncode attribute, and output & stderr attributes if those streams
        were captured.

        If timeout is given, and the process takes too long, a TimeoutExpired
        exception will be raised.

        There is an optional argument "input", allowing you to
        pass bytes or a string to the subprocess's stdin.  If you use this argument
        you may not also use the Popen constructor's "stdin" argument, as
        it will be used internally.

        By default, all communication is in bytes, and therefore any "input" should
        be bytes, and the stdout and stderr will be bytes. If in text mode, any
        "input" should be a string, and stdout and stderr will be strings decoded
        according to locale encoding, or by "encoding" if set. Text mode is
        triggered by setting any of text, encoding, errors or universal_newlines.

        The other arguments are the same as for the Popen constructor.
        """
        if input is not None:
            if kwargs.get('stdin') is not None:
                raise ValueError('stdin and input arguments may not both be used.')
            kwargs['stdin'] = PIPE

        if capture_output:
            if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None:
                raise ValueError('stdout and stderr arguments may not be used '
                                 'with capture_output.')
            kwargs['stdout'] = PIPE
            kwargs['stderr'] = PIPE

        with Popen(*popenargs, **kwargs) as process:
            try:
                stdout, stderr = process.communicate(input, timeout=timeout)
            except TimeoutExpired as exc:
                process.kill()
                if _mswindows:
                    # Windows accumulates the output in a single blocking
                    # read() call run on child threads, with the timeout
                    # being done in a join() on those threads.  communicate()
                    # _after_ kill() is required to collect that and add it
                    # to the exception.
                    exc.stdout, exc.stderr = process.communicate()
                else:
                    # POSIX _communicate already populated the output so
                    # far into the TimeoutExpired exception.
                    process.wait()
                raise
            except:  # Including KeyboardInterrupt, communicate handled that.
                process.kill()
                # We don't call process.wait() as .__exit__ does that for us.
                raise
            retcode = process.poll()
            if check and retcode:
>               raise CalledProcessError(retcode, process.args,
                                         output=stdout, stderr=stderr)
E               subprocess.CalledProcessError: Command 'PLAYERS=2 /home/ubuntu/MP-SPDZ/Scripts/semi.sh testmpc' returned non-zero exit status 1.

/usr/lib/python3.12/subprocess.py:571: CalledProcessError

During handling of the above exception, another exception occurred:

    def test_median_success():
>       execute_stat_func_test(
            mpcstats_lib.median,
            statistics.median,
            num_params = 1,
            player_data = player_data_4x2_2_party,
            selected_col = 1,
            tolerance = TOLERANCE_SMALL,
        )

tests/test_ops.py:66:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/lib.py:234: in execute_stat_func_test
    mpspdz_stdout = run_mpcstats_func(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

computation = <function gen_stat_func_comp.<locals>.computation at 0xe69ccf873560>, num_parties = 2
mpc_script = PosixPath('/home/ubuntu/MP-SPDZ/Scripts/semi.sh'), prog = 'testmpc'
cfg = DefaultMPSPDZConfig(round_nearest=True, f=22, k=40)

    def run_mpcstats_func(
        computation,
        num_parties,
        mpc_script,
        prog,
        cfg = DefaultMPSPDZConfig(),
    ):
        def init_and_compute():
            sfix.round_nearest = cfg.round_nearest
            sfix.set_precision(cfg.f, cfg.k)
            computation()

        # compile .x
        compiler = Compiler()
        compiler.register_function(prog)(init_and_compute)
        compiler.compile_func()

        # execute .x
        cmd = f'PLAYERS={num_parties} {mpc_script} {prog}'

        try:
            res = subprocess.run(cmd, shell=True, capture_output=True, check=True, text=True)
            return res.stdout

        except subprocess.CalledProcessError as e:
>           raise Exception(f'Executing MPC failed ({e.returncode}): stdout: {e.stdout}, stderr: {e.stderr}')
E           Exception: Executing MPC failed (1): stdout: Using statistical security parameter 40
E           semi-party.x: ./Protocols/SecureShuffle.hpp:302: void SecureShuffle<SemiShare<gfp_<0, 2>>>::configure(int, vector<int> *, int) [T = SemiShare<gfp_<0, 2>>]: Assertion `x[j] == 0' failed.
E           === Party 1
E           Using statistical security parameter 40
E           semi-party.x: ./Protocols/SecureShuffle.hpp:302: void SecureShuffle<SemiShare<gfp_<0, 2>>>::configure(int, vector<int> *, int) [T = SemiShare<gfp_<0, 2>>]: Assertion `x[j] == 0' failed.
E           , stderr: Running /home/ubuntu/MP-SPDZ/Scripts/../semi-party.x 0 testmpc -pn 19051 -h localhost -N 2
E           Running /home/ubuntu/MP-SPDZ/Scripts/../semi-party.x 1 testmpc -pn 19051 -h localhost -N 2
E           /home/ubuntu/MP-SPDZ/Scripts/run-common.sh: line 90: 151891 Aborted                 (core dumped) $my_prefix $SPDZROOT/$bin $i $params 2>&1
E                151892 Done                    | { if test "$BENCH"; then
E               if test $i = $front_player; then
E                   tee -a $log;
E               else
E                   cat >> $log;
E               fi;
E           else
E               if test $i = $front_player; then
E                   tee $log;
E               else
E                   cat > $log;
E               fi;
E           fi; }
E           /home/ubuntu/MP-SPDZ/Scripts/run-common.sh: line 90: 151893 Aborted                 (core dumped) $my_prefix $SPDZROOT/$bin $i $params 2>&1
E                151894 Done                    | { if test "$BENCH"; then
E               if test $i = $front_player; then
E                   tee -a $log;
E               else
E                   cat >> $log;
E               fi;
E           else
E               if test $i = $front_player; then
E                   tee $log;
E               else
E                   cat > $log;
E               fi;
E           fi; }

tests/lib.py:85: Exception
------------------------------------------------- Captured stdout call --------------------------------------------------
Compiling program in Programs
Default bit length for compilation: 64
Default security parameter for compilation: 40
Galois length: 40
Compiling: testmpc from compile_func
New allocated memory in testmpc-0--0 s:192
New allocated memory in testmpc-0-begin-loop-1 s:8
New allocated memory in testmpc-0--3 s:12
New allocated memory in testmpc-0--4 c:4
New allocated memory in testmpc-0--8 c:4
New allocated memory in testmpc-0--12 c:4
Processing tape testmpc-0 with 23 blocks
Processing basic block testmpc-0--0, 0/23, 203 instructions
Block requires 16 inputmixed, 1 BitDecField(40)
Block requires 1 inputmixed, 1 BitDecField(40) rounds
Processing basic block testmpc-0-begin-loop-1, 1/23, 43 instructions
WARNING: Order of memory instructions not preserved, errors possible
Processing basic block testmpc-0--2, 2/23, 9 instructions
Processing basic block testmpc-0--3, 3/23, 14 instructions
Block requires 1 muls
Block requires 1 muls rounds
Processing basic block testmpc-0--4, 4/23, 8 instructions
Block requires 1 vasm_open
Block requires 1 vasm_open rounds
Processing basic block testmpc-0--5, 5/23, 10 instructions
Processing basic block testmpc-0--6, 6/23, 3 instructions
Processing basic block testmpc-0-if-block-7, 7/23, 35 instructions
Processing basic block testmpc-0--8, 8/23, 15 instructions
Block requires 1 vasm_open
Block requires 1 vasm_open rounds
Processing basic block testmpc-0--9, 9/23, 5 instructions
Processing basic block testmpc-0--10, 10/23, 1 instructions
Processing basic block testmpc-0--12, 12/23, 17 instructions
Block requires 1 vasm_open
Block requires 1 vasm_open rounds
Processing basic block testmpc-0--13, 13/23, 6 instructions
Processing basic block testmpc-0--14, 14/23, 1 instructions
Processing basic block testmpc-0-end-if-15, 15/23, 4 instructions
Processing basic block testmpc-0-update-16, 16/23, 2 instructions
Processing basic block testmpc-0-end-loop-17, 17/23, 40 instructions
Block requires 4 EQZ
Block requires 1 EQZ rounds
Processing basic block testmpc-0-begin-loop-18, 18/23, 53 instructions
Block requires 1 Mod2m, 1 EQZ, 1 muls
Block requires 1 Mod2m, 1 EQZ, 1 muls rounds
Processing basic block testmpc-0-update-19, 19/23, 116 instructions
Block requires 2 Mod2m, 2 EQZ, 2 muls, 2 Trunc
Block requires 1 Mod2m, 1 EQZ, 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-20, 20/23, 4 instructions
Processing basic block testmpc-0-update-21, 21/23, 2 instructions
Processing basic block testmpc-0-end-loop-22, 22/23, 19 instructions
Block requires 2 Mod2m, 2 muls, 1 asm_open
Block requires 1 Mod2m, 1 muls, 1 asm_open rounds
expanding BitDecField(40)
Compiling function BitDecField(40)(4)_40_40_40
Eliminated 3 dead instructions, among which 0 opens: {'vsubs': 1, 'vmulsi': 1, 'vaddm': 1}
New allocated memory in testmpc-0-begin-BitDecField(40)(4)_40_40_40-26 ci:1
Done compiling function BitDecField(40)(4)_40_40_40
expanding EQZ
Compiling function EQZ(4)_40_None
New allocated memory in testmpc-0-begin-EQZ(4)_40_None-89 ci:1
Done compiling function EQZ(4)_40_None
expanding Mod2m
Compiling function Mod2m(1)_64_1_None_True
New allocated memory in testmpc-0-begin-Mod2m(1)_64_1_None_True-97 ci:1
Done compiling function Mod2m(1)_64_1_None_True
expanding EQZ
Compiling function EQZ(1)_40_None
New allocated memory in testmpc-0-begin-EQZ(1)_40_None-104 ci:1
Done compiling function EQZ(1)_40_None
expanding Mod2m
Compiling function Mod2m(2)_64_1_None_True
New allocated memory in testmpc-0-begin-Mod2m(2)_64_1_None_True-112 ci:1
Done compiling function Mod2m(2)_64_1_None_True
expanding EQZ
Compiling function EQZ(2)_40_None
New allocated memory in testmpc-0-begin-EQZ(2)_40_None-119 ci:1
Done compiling function EQZ(2)_40_None
expanding Trunc
Compiling function Trunc(2)_42_1_40_True
New allocated memory in testmpc-0-begin-Trunc(2)_42_1_40_True-126 ci:1
Done compiling function Trunc(2)_42_1_40_True
expanding Mod2m
Tape register usage before re-allocation: {'c': 705, 's': 9578, 'cg': 0, 'sg': 0, 'ci': 707}
modp: 705 clear, 9578 secret
GF2N: 0 clear, 0 secret
Re-allocating...
cannot free 1 register blocks by a gap of 3 at 1
Allocated registers in testmpc-0-end-loop-22 c:5 s:6
cannot free 3 register blocks by a gap of 3 at 3
Allocated registers in testmpc-0-call-Mod2m(2)_64_1_None_True-136 s:1
cannot free 3 register blocks by a gap of 3 at 3
Allocated registers in testmpc-0-update-135 ci:1
cannot free 2 register blocks by a gap of 5 at 3
Allocated registers in testmpc-0--134 s:4
cannot free 2 register blocks by a gap of 5 at 3
Allocated registers in testmpc-0-update-21 ci:2
cannot free 2 register blocks by a gap of 5 at 3
cannot free 1 register blocks by a gap of 6 at 3
cannot free 3 register blocks by a gap of 2 at 9
Allocated registers in testmpc-0-call-Trunc(2)_42_1_40_True-129 s:1
cannot free 3 register blocks by a gap of 2 at 9
Allocated registers in testmpc-0-update-127 ci:1
cannot free 1 register blocks by a gap of 2 at 12
Allocated registers in testmpc-0-begin-Trunc(2)_42_1_40_True-126 c:4 s:10 ci:4
cannot free 3 register blocks by a gap of 2 at 9
cannot free 1 register blocks by a gap of 8 at 3
Allocated registers in testmpc-0--123 s:3 ci:2
cannot free 2 register blocks by a gap of 2 at 9
cannot free 2 register blocks by a gap of 2 at 9
Allocated registers in testmpc-0-update-120 ci:1
cannot free 56 register blocks by a gap of 2 at 135
Allocated registers in testmpc-0-begin-EQZ(2)_40_None-119 c:80 s:114 ci:82
cannot free 2 register blocks by a gap of 2 at 9
cannot free 1 register blocks by a gap of 8 at 3
cannot free 1 register blocks by a gap of 1 at 139
Allocated registers in testmpc-0--116 s:2
cannot free 2 register blocks by a gap of 2 at 9
cannot free 2 register blocks by a gap of 2 at 9
Allocated registers in testmpc-0-update-113 ci:1
Allocated registers in testmpc-0-begin-Mod2m(2)_64_1_None_True-112 c:4 s:8 ci:4
cannot free 2 register blocks by a gap of 2 at 9
cannot free 3 register blocks by a gap of 2 at 9
cannot free 4 register blocks by a gap of 2 at 9
cannot free 3 register blocks by a gap of 2 at 9
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0-update-105 ci:1
cannot free 1 register blocks by a gap of 1 at 149
Allocated registers in testmpc-0-begin-EQZ(1)_40_None-104 c:40 s:57 ci:40
cannot free 3 register blocks by a gap of 3 at 7
cannot free 2 register blocks by a gap of 3 at 7
cannot free 2 register blocks by a gap of 3 at 7
cannot free 1 register blocks by a gap of 3 at 7
cannot free 1 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0-update-98 ci:1
Allocated registers in testmpc-0-begin-Mod2m(1)_64_1_None_True-97 c:2 s:4 ci:1
cannot free 1 register blocks by a gap of 3 at 7
cannot free 1 register blocks by a gap of 3 at 7
cannot free 2 register blocks by a gap of 3 at 7
cannot free 2 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0-call-EQZ(4)_40_None-92 s:4
cannot free 3 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0-update-90 ci:1
cannot free 53 register blocks by a gap of 4 at 422
Allocated registers in testmpc-0-begin-EQZ(4)_40_None-89 c:160 s:228 ci:164
cannot free 3 register blocks by a gap of 3 at 7
cannot free 1 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0-update-16 ci:2
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0--13 s:8
cannot free 3 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0--12 c:8 ci:6
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0--3 s:28
cannot free 3 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0--2 ci:24
cannot free 3 register blocks by a gap of 3 at 7
cannot free 3 register blocks by a gap of 3 at 7
Allocated registers in testmpc-0--0 s:124
cannot free 3 register blocks by a gap of 3 at 7
cannot free 1 register blocks by a gap of 4 at 598
Allocated registers in testmpc-0-call-BitDecField(40)(4)_40_40_40-68 s:4
cannot free 3 register blocks by a gap of 3 at 7
cannot free 1 register blocks by a gap of 4 at 598
Allocated registers in testmpc-0-update-66 ci:1
Allocated registers in testmpc-0-update-65 s:4
Allocated registers in testmpc-0-update-64 s:4
Allocated registers in testmpc-0-update-63 s:4
Allocated registers in testmpc-0-update-62 s:4
Allocated registers in testmpc-0-update-61 s:4
Allocated registers in testmpc-0-update-60 s:4
Allocated registers in testmpc-0-update-59 s:4
Allocated registers in testmpc-0-update-58 s:4
Allocated registers in testmpc-0-update-57 s:4
Allocated registers in testmpc-0-update-56 s:4
Allocated registers in testmpc-0-update-55 s:4
Allocated registers in testmpc-0-update-54 s:4
Allocated registers in testmpc-0-update-53 s:4
Allocated registers in testmpc-0-update-52 s:4
Allocated registers in testmpc-0-update-51 s:4
Allocated registers in testmpc-0-update-50 s:4
Allocated registers in testmpc-0-update-49 s:4
Allocated registers in testmpc-0-update-48 s:4
Allocated registers in testmpc-0-update-47 s:4
Allocated registers in testmpc-0-update-46 s:4
Allocated registers in testmpc-0-update-45 s:4
Allocated registers in testmpc-0-update-44 s:4
Allocated registers in testmpc-0-update-43 s:4
Allocated registers in testmpc-0-update-42 s:4
Allocated registers in testmpc-0-update-41 s:4
Allocated registers in testmpc-0-update-40 s:4
Allocated registers in testmpc-0-update-39 s:4
Allocated registers in testmpc-0-update-38 s:4
Allocated registers in testmpc-0-update-37 s:4
Allocated registers in testmpc-0-update-36 s:4
Allocated registers in testmpc-0-update-35 s:4
Allocated registers in testmpc-0-update-34 s:4
Allocated registers in testmpc-0-update-33 s:4
Allocated registers in testmpc-0-update-32 s:4
Allocated registers in testmpc-0-update-31 s:4
Allocated registers in testmpc-0-update-30 s:4
Allocated registers in testmpc-0-update-29 s:4
Allocated registers in testmpc-0-update-28 s:4
Allocated registers in testmpc-0-update-27 s:4
cannot free 101 register blocks by a gap of 4 at 1006
Allocated registers in testmpc-0-begin-BitDecField(40)(4)_40_40_40-26 c:160 s:476 ci:164
cannot free 3 register blocks by a gap of 3 at 7
cannot free 1 register blocks by a gap of 4 at 598
cannot free 3 register blocks by a gap of 3 at 7
cannot free 5 register blocks by a gap of 3 at 7
cannot free 1 register blocks by a gap of 4 at 598
Allocated registers in testmpc-0-cisc-23 s:14
Used registers:
Total: {}
Unused instructions: {'ldi': 3, 'ldsi': 54, 'vmovs': 1, 'ldarg': 7, 'vldsi': 2}
Tape register usage: {'c': 463, 's': 1252, 'ci': 504}
16 register fragments in 8 scopes
Compile offline data requirements...
Tape requires          408 integer inputs from player 0,          408 integer inputs from player 1,            1 inputmixed rounds,            1 BitDecField(40) rounds,            9 EQZ rounds,         4010 integer triples,          363 integer opens,            9 Mod2m rounds,           49 muls rounds,            1 asm_open rounds,          inf bit inverses,           80 vasm_open rounds,            4 Trunc rounds,         3712 integer bits,          154 virtual machine rounds
Tape requires prime bit length 105
Tape requires galois bit length 0
Writing to Programs/Schedules/testmpc.sch
Writing to Programs/Bytecode/testmpc-0.bc
Hash: 29d2e347b91f8b6131963d5c9430c3b8f072383e610db05dc7dafe3ca7239a2b
Program requires at most:
         408 integer inputs from player 0
         408 integer inputs from player 1
           1 inputmixed rounds
           1 BitDecField(40) rounds
           9 EQZ rounds
        4010 integer triples
         363 integer opens
           9 Mod2m rounds
          49 muls rounds
           1 asm_open rounds
         inf bit inverses
          80 vasm_open rounds
           4 Trunc rounds
        3712 integer bits
         154 virtual machine rounds
Program requires: {('modp', 'input', 0): 408, ('modp', 'input', 1): 408, ('all', 'round'): 154, ('all', 'inv'): 190, ('inputmixed', 'round'): 1, ('BitDecField(40)', 'round'): 1, ('EQZ', 'round'): 9, ('modp', 'triple'): 4010, ('modp', 'open'): 363, ('Mod2m', 'round'): 9, ('muls', 'round'): 49, ('asm_open', 'round'): 1, ('bit', 'inverse'): inf, ('vasm_open', 'round'): 80, ('Trunc', 'round'): 4, ('modp', 'bit'): 3712}
Cost: nan
Memory size: {'c': 8204, 's': 8404, 'cg': 8192, 'sg': 8192, 'ci': 8199}
____________________________________________ test_linear_regression_success _____________________________________________

    def test_linear_regression_success():
        def vector_res_parser(x):
            return [x.slope, x.intercept]

        player_data = gen_player_data(30, 2, 2, -100, 100, 0.5)
>       execute_stat_func_test(
            mpcstats_lib.linear_regression,
            statistics.linear_regression,
            num_params = 2,
            player_data = player_data,
            selected_col = 1,
            tolerance = TOLERANCE_SMALL,
            vector_res_parser = vector_res_parser,
        )

tests/test_ops.py:380:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/lib.py:255: in execute_stat_func_test
    assert_mp_py_diff(mp, py, tolerance)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

mp = 0.000145912, py = 0.00014599570676361196, tolerance = 0.0001

    def assert_mp_py_diff(mp, py, tolerance):
        mp = float(mp)
        py = float(py)

        if py == 0:
            if mp == 0:
                print(f'mp={mp}, py={py}, diff=0')
            else:
                print(f'mp={mp}, py={py}, diff=?')
                assert False
        else:
            diff = (py - mp) / py
            print(f'mp={mp}, py={py}, diff={diff*100:.5f}%')
>           assert abs(diff) < tolerance
E           AssertionError

tests/lib.py:210: AssertionError
------------------------------------------------- Captured stdout call --------------------------------------------------
Compiling program in Programs
Default bit length for compilation: 64
Default security parameter for compilation: 40
Galois length: 40
Compiling: testmpc from compile_func
New allocated memory in testmpc-0--0 s:240
New allocated memory in testmpc-0-end-loop-4 s:30
New allocated memory in testmpc-0-update-34 c:2 s:2
Processing tape testmpc-0 with 36 blocks
Processing basic block testmpc-0--0, 0/36, 3312 instructions
Block requires 120 inputmixed, 180 EQZ, 120 muls, 2 FPDiv
Block requires 1 inputmixed, 1 EQZ, 2 muls, 1 FPDiv rounds
Processing basic block testmpc-0-begin-loop-1, 1/36, 75 instructions
WARNING: Order of memory instructions not preserved, errors possible
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-2, 2/36, 4 instructions
Processing basic block testmpc-0-update-3, 3/36, 2 instructions
Processing basic block testmpc-0-end-loop-4, 4/36, 1402 instructions
Block requires 2 FPDiv, 90 EQZ, 61 muls, 1 Trunc
Block requires 2 FPDiv, 1 EQZ, 3 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-5, 5/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-6, 6/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-7, 7/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-8, 8/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-9, 9/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-10, 10/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-11, 11/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-12, 12/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-13, 13/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-14, 14/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-15, 15/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-16, 16/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-17, 17/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-18, 18/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-19, 19/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-20, 20/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-21, 21/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-22, 22/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-23, 23/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-24, 24/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-25, 25/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-26, 26/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-27, 27/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-28, 28/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-29, 29/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-30, 30/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-31, 31/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-32, 32/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-33, 33/36, 13 instructions
Block requires 1 muls, 1 Trunc
Block requires 1 muls, 1 Trunc rounds
Processing basic block testmpc-0-update-34, 34/36, 1706 instructions
Block requires 4 FPDiv, 120 EQZ, 61 muls, 1 Trunc, 1 vasm_open
Block requires 3 FPDiv, 1 EQZ, 2 muls, 1 Trunc, 1 vasm_open rounds
Processing basic block testmpc-0--35, 35/36, 21 instructions
expanding EQZ
Compiling function EQZ(180)_40_None
New allocated memory in testmpc-0-begin-EQZ(180)_40_None-39 ci:1
Done compiling function EQZ(180)_40_None
expanding FPDiv
Compiling function FPDiv(2)_40_22_None
New allocated memory in testmpc-0-begin-FPDiv(2)_40_22_None-47 ci:1
Done compiling function FPDiv(2)_40_22_None
expanding Trunc
Compiling function Trunc(1)_63_22_40_True
New allocated memory in testmpc-0-begin-Trunc(1)_63_22_40_True-55 ci:1
Done compiling function Trunc(1)_63_22_40_True
expanding FPDiv
Compiling function FPDiv(1)_40_22_None
New allocated memory in testmpc-0-begin-FPDiv(1)_40_22_None-66 ci:1
Done compiling function FPDiv(1)_40_22_None
expanding EQZ
Compiling function EQZ(90)_40_None
New allocated memory in testmpc-0-begin-EQZ(90)_40_None-73 ci:1
Done compiling function EQZ(90)_40_None
expanding FPDiv
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding Trunc
expanding FPDiv
expanding FPDiv
expanding EQZ
Compiling function EQZ(120)_40_None
New allocated memory in testmpc-0-begin-EQZ(120)_40_None-245 ci:1
Done compiling function EQZ(120)_40_None
expanding FPDiv
expanding Trunc
Tape register usage before re-allocation: {'c': 21859, 's': 234843, 'cg': 0, 'sg': 0, 'ci': 17470}
modp: 21859 clear, 234843 secret
GF2N: 0 clear, 0 secret
Re-allocating...
Allocated registers in testmpc-0--35 c:6
cannot free 2 register blocks by a gap of 3 at 2
Allocated registers in testmpc-0-update-34 s:8
cannot free 3 register blocks by a gap of 3 at 4
cannot free 3 register blocks by a gap of 3 at 4
Allocated registers in testmpc-0-update-256 ci:1
cannot free 3 register blocks by a gap of 1 at 8
Allocated registers in testmpc-0--255 s:2
cannot free 3 register blocks by a gap of 1 at 8
cannot free 2 register blocks by a gap of 1 at 6
cannot free 2 register blocks by a gap of 1 at 6
cannot free 1 register blocks by a gap of 3 at 6
cannot free 2 register blocks by a gap of 3 at 12
Allocated registers in testmpc-0--250 s:7
cannot free 33 register blocks by a gap of 10 at 213
Allocated registers in testmpc-0--249 s:207
cannot free 153 register blocks by a gap of 120 at 223
Allocated registers in testmpc-0-call-EQZ(120)_40_None-248 s:120
cannot free 153 register blocks by a gap of 120 at 223
Allocated registers in testmpc-0-update-246 ci:1
cannot free 56 register blocks by a gap of 120 at 6944
Allocated registers in testmpc-0-begin-EQZ(120)_40_None-245 c:4800 s:6840 ci:4920
cannot free 153 register blocks by a gap of 120 at 223
cannot free 33 register blocks by a gap of 226 at 117
cannot free 213 register blocks by a gap of 120 at 223
cannot free 213 register blocks by a gap of 120 at 223
cannot free 213 register blocks by a gap of 120 at 223
cannot free 211 register blocks by a gap of 120 at 223
cannot free 209 register blocks by a gap of 120 at 223
cannot free 209 register blocks by a gap of 120 at 223
cannot free 210 register blocks by a gap of 120 at 223
cannot free 210 register blocks by a gap of 120 at 223
cannot free 209 register blocks by a gap of 120 at 223
cannot free 208 register blocks by a gap of 120 at 223
cannot free 208 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 208 register blocks by a gap of 120 at 223
cannot free 208 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 207 register blocks by a gap of 120 at 223
cannot free 206 register blocks by a gap of 120 at 223
cannot free 148 register blocks by a gap of 120 at 223
cannot free 149 register blocks by a gap of 120 at 223
cannot free 149 register blocks by a gap of 120 at 223
cannot free 148 register blocks by a gap of 120 at 223
cannot free 148 register blocks by a gap of 120 at 223
cannot free 60 register blocks by a gap of 121 at 222
cannot free 150 register blocks by a gap of 121 at 222
Allocated registers in testmpc-0-call-EQZ(90)_40_None-76 s:90
cannot free 150 register blocks by a gap of 121 at 222
Allocated registers in testmpc-0-update-74 ci:1
cannot free 19 register blocks by a gap of 90 at 8894
Allocated registers in testmpc-0-begin-EQZ(90)_40_None-73 c:3600 s:5130 ci:3690
cannot free 150 register blocks by a gap of 121 at 222
cannot free 60 register blocks by a gap of 134 at 209
cannot free 210 register blocks by a gap of 120 at 223
cannot free 211 register blocks by a gap of 120 at 223
cannot free 211 register blocks by a gap of 120 at 223
Allocated registers in testmpc-0-update-67 ci:1
Allocated registers in testmpc-0-begin-FPDiv(1)_40_22_None-66 c:49 s:264 ci:44
cannot free 211 register blocks by a gap of 120 at 223
cannot free 211 register blocks by a gap of 120 at 223
cannot free 211 register blocks by a gap of 120 at 223
cannot free 211 register blocks by a gap of 120 at 223
cannot free 209 register blocks by a gap of 120 at 223
Allocated registers in testmpc-0-update-3 ci:2
cannot free 209 register blocks by a gap of 120 at 223
cannot free 208 register blocks by a gap of 120 at 223
cannot free 209 register blocks by a gap of 120 at 223
cannot free 209 register blocks by a gap of 120 at 223
Allocated registers in testmpc-0-update-56 ci:1
Allocated registers in testmpc-0-begin-Trunc(1)_63_22_40_True-55 c:24 s:65 ci:22
cannot free 209 register blocks by a gap of 120 at 223
cannot free 209 register blocks by a gap of 120 at 223
cannot free 210 register blocks by a gap of 120 at 223
Allocated registers in testmpc-0-cisc-52 ci:1
cannot free 91 register blocks by a gap of 120 at 223
cannot free 93 register blocks by a gap of 120 at 223
cannot free 93 register blocks by a gap of 120 at 223
Allocated registers in testmpc-0-update-48 ci:1
Allocated registers in testmpc-0-begin-FPDiv(2)_40_22_None-47 c:98 s:528 ci:90
cannot free 93 register blocks by a gap of 120 at 223
cannot free 93 register blocks by a gap of 120 at 223
cannot free 92 register blocks by a gap of 120 at 223
cannot free 5 register blocks by a gap of 260 at 83
cannot free 29 register blocks by a gap of 61 at 13317
Allocated registers in testmpc-0--43 s:119
cannot free 155 register blocks by a gap of 120 at 223
cannot free 59 register blocks by a gap of 181 at 13377
Allocated registers in testmpc-0-call-EQZ(180)_40_None-42 s:179
cannot free 155 register blocks by a gap of 120 at 223
cannot free 59 register blocks by a gap of 181 at 13377
Allocated registers in testmpc-0-update-40 ci:1
cannot free 13 register blocks by a gap of 180 at 15719
Allocated registers in testmpc-0-begin-EQZ(180)_40_None-39 c:7200 s:10260 ci:7380
cannot free 155 register blocks by a gap of 120 at 223
cannot free 59 register blocks by a gap of 181 at 13377
cannot free 4 register blocks by a gap of 330 at 12
cannot free 30 register blocks by a gap of 181 at 13377
cannot free 216 register blocks by a gap of 120 at 223
cannot free 118 register blocks by a gap of 180 at 13378
Used registers:
Total: {}
Unused instructions: {'ldi': 155, 'vldsi': 1, 'ldsi': 1546, 'movs': 3, 'vmovs': 2, 'ldarg': 6}
Tape register usage: {'c': 15777, 's': 23819, 'ci': 16157}
14 register fragments in 7 scopes
Compile offline data requirements...
Tape requires           60 integer inputs from player 0,           60 integer inputs from player 1,        25840 integer triples,            1 inputmixed rounds,            3 EQZ rounds,           66 muls rounds,            6 FPDiv rounds,           61 Trunc rounds,          541 integer opens,            1 vasm_open rounds,        47651 integer bits,          138 virtual machine rounds
Tape requires prime bit length 41
Tape requires galois bit length 0
Writing to Programs/Schedules/testmpc.sch
Writing to Programs/Bytecode/testmpc-0.bc
Hash: db97298ade96d959d46abb5fb6f5e92fc26318c8d870cbdad55c54ec54ffc405
Program requires at most:
          60 integer inputs from player 0
          60 integer inputs from player 1
       25840 integer triples
           1 inputmixed rounds
           3 EQZ rounds
          66 muls rounds
           6 FPDiv rounds
          61 Trunc rounds
         541 integer opens
           1 vasm_open rounds
       47651 integer bits
         138 virtual machine rounds
Program requires: {('modp', 'input', 0): 60, ('modp', 'input', 1): 60, ('all', 'round'): 138, ('all', 'inv'): 881, ('modp', 'triple'): 25840, ('inputmixed', 'round'): 1, ('EQZ', 'round'): 3, ('muls', 'round'): 66, ('FPDiv', 'round'): 6, ('Trunc', 'round'): 61, ('modp', 'open'): 541, ('vasm_open', 'round'): 1, ('modp', 'bit'): 47651}
Cost: 15.177819083023543
Memory size: {'c': 8194, 's': 8464, 'cg': 8192, 'sg': 8192, 'ci': 8198}
stdout:Using statistical security parameter 40
result: [0.000145912, -31.1346]
The following benchmarks are including preprocessing (offline phase).
Time = 12.3933 seconds
Data sent = 81.7627 MB in ~2148 rounds (party 0 only; use '-v' for more details)
Global data sent = 163.718 MB (all parties)

col1: [999, 999, -7, 999, 999, 83, -19, -38, -35, 999, 999, 74, 999, -69, 46, -41, 999, 95, 999, -78, 999, 999, 34, 999, 35, 23, 25, 999, 999, 999]
col1 excl M: [-7, 83, -19, -38, -35, 74, -69, 46, -41, 95, -78, 34, 35, 23, 25]
col2: [999, 999, -92, 999, 999, 25, -47, 19, -92, 999, 999, -27, 999, 9, -61, -37, 999, -19, 999, 7, 999, 999, -94, 999, 67, -73, -52, 999, 999, 999]
col2 excl M: [-92, 25, -47, 19, -92, -27, 9, -61, -37, -19, 7, -94, 67, -73, -52]
mp=0.000145912, py=0.00014599570676361196, diff=0.05734%
================================================ short test summary info ================================================
FAILED tests/test_ops.py::test_median_success - Exception: Executing MPC failed (1): stdout: Using statistical security parameter 40
FAILED tests/test_ops.py::test_linear_regression_success - AssertionError
================================== 2 failed, 13 passed, 2 xfailed in 119.57s (0:01:59) ================================

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions