#include <tommath.h>
#include <cassert>
#include <tomcrypt.h>

void testTomMath(){
    mp_int x{};
    mp_init(&x);
    mp_read_radix(&x, "2280880776330203449294339386427307168808659578661428574166839717243346815923951250209099128371839254311904649344289668000305972691071196233379180504231889", 10);

    mp_int n{};
    mp_init(&n);
    mp_read_radix(&n, "436860662135489324843442078840868871476482593772359054106809367217662215065650065606351911592188139644751920724885335056877706082800496073391354240530016", 10);

    mp_int exp{};
    mp_init(&exp);
    mp_2expt(&exp, 1000);


    mp_int r{};
    mp_init(&r);
    assert(mp_exptmod(&x, &exp, &n, &r) != CRYPT_OK); //if this method succeed than tommath failed. Unknown why but it is so

    mp_clear_multi(&x, &n, &exp, &r, nullptr);
}