Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

polynomial root solve #1933

Open
tsukurudesktop opened this issue Sep 28, 2022 · 0 comments
Open

polynomial root solve #1933

tsukurudesktop opened this issue Sep 28, 2022 · 0 comments

Comments

@tsukurudesktop
Copy link

a friend of mine wants to solve the roots of a polynomial, which is computed from det() method of a dense matrix, which is the product of two matrix, one is symbolic, the other is just contants.
When the solve() function is used, an exception of "Not implemented intersection set" is thrown. And I'm wandering is it really not implemented. His code is attached below.

#include <symengine/basic.h>
#include <symengine/matrix.h>
#include <symengine/symbol.h>
#include <symengine/pow.h>
#include <symengine/integer.h>
#include <symengine/symengine_exception.h>
#include <symengine/complex_double.h>
#include <symengine/rings.h>
#include <symengine/monomials.h>
#include <symengine/eval_double.h>
#include <symengine/solve.h>
#include <complex>
#include <symengine/simplify.h>
using SymEngine::Basic;
using SymEngine::DenseMatrix;
using SymEngine::RCP;
using SymEngine::symbol;
using SymEngine::integer;
using SymEngine::pow;
using SymEngine::complex_double;
using SymEngine::umap_vec_mpz;
using SymEngine::vec_int;
using SymEngine::umap_basic_num;
using SymEngine::expr2poly;
using SymEngine::solve;
using SymEngine::zero;
using SymEngine::I;
using SymEngine::eval_double;

int main() 
{
    // clang-format off
    RCP<const Symbol> z1 = symbol("z1"), z2 = symbol("z2");
    DenseMatrix temp1 = DenseMatrix(4, 16, 
        {
            pow(z1, integer(3)),integer(0),  integer(0),  integer(0),pow(z1, integer(2)), integer(0),  integer(0),  integer(0),z1, integer(0),  integer(0),  integer(0),integer(1), integer(0),  integer(0), integer(0),
	    integer(0),  pow(z1, integer(3)),integer(0), integer(0),integer(0),pow(z1, integer(2)), integer(0), integer(0),integer(0), z1, integer(0), integer(0), integer(0),integer(1),integer(0),  integer(0),
	    integer(0),  integer(0),pow(z1, integer(3)),integer(0),  integer(0),  integer(0),pow(z1, integer(2)),integer(0),  integer(0),  integer(0) ,z1,integer(0),  integer(0),  integer(0),integer(1),integer(0),
	    integer(0),  integer(0),  integer(0),pow(z1, integer(3)),integer(0),  integer(0),  integer(0),pow(z1, integer(2)),integer(0),  integer(0),  integer(0),z1,integer(0),  integer(0),  integer(0),integer(1)
        });

    DenseMatrix temp2 = DenseMatrix(16, 4, 
        {
            integer(1),integer(0),  integer(0),  integer(0),
            integer(0),integer(1),  integer(0),  integer(0),
            integer(0),integer(0),  integer(1),  integer(0),
            integer(0),integer(0),  integer(0),  integer(1),
            z1,        integer(0),  integer(0),  integer(0),
            integer(0),z1,          integer(0),  integer(0),
            integer(0),integer(0),  z1,          integer(0),
            integer(0),integer(0),  integer(0),  z1,
            pow(z1, integer(2)),    integer(0),  integer(0), integer(0),
            integer(0),pow(z1, integer(2)),     integer(0),  integer(0),
            integer(0),integer(0),  pow(z1, integer(2)),     integer(0),
            integer(0),integer(0),  integer(0),              pow(z1, integer(2)),
            pow(z1, integer(3)),        integer(0),  integer(0),  integer(0),
            integer(0),pow(z1, integer(3)),          integer(0),  integer(0),
            integer(0),integer(0),  pow(z1, integer(3)),          integer(0),
            integer(0),integer(0),  integer(0),  pow(z1, integer(3))
        });
    
    DenseMatrix temp4 = DenseMatrix(4,16,
	{
	    pow(z2, integer(3)),pow(z2, integer(2)),  z2,  integer(1),integer(0),integer(0),  integer(0),  integer(0),integer(0),integer(0),  integer(0),  integer(0),integer(0),integer(0), integer(0),  integer(0),
            integer(0),integer(0),  integer(0),  integer(0),pow(z2, integer(3)),pow(z2, integer(2)),  z2,  integer(1),integer(0),integer(0),  integer(0),  integer(0),integer(0),integer(0),  integer(0),  integer(0),
            integer(0),integer(0),  integer(0),  integer(0),integer(0),integer(0),  integer(0),  integer(0),pow(z2, integer(3)),pow(z2, integer(2)),  z2,  integer(1),integer(0),integer(0),  integer(0),  integer(0),
            integer(0),integer(0),  integer(0),  integer(0),integer(0),integer(0),  integer(0),  integer(0),integer(0),integer(0),  integer(0),  integer(0),pow(z2, integer(3)),pow(z2, integer(2)),  z2,  integer(1)
        });
    DenseMatrix temp5 = DenseMatrix(16,4,
        {
             integer(1),integer(0),  integer(0),integer(0),
             pow(z2, integer(1)),integer(0),  integer(0),integer(0),
             pow(z2, integer(2)),integer(0),  integer(0),integer(0),
             pow(z2, integer(3)),integer(0),  integer(0),integer(0),
             integer(0),integer(1),  integer(0),integer(0),
             integer(0),pow(z2, integer(1)),  integer(0),integer(0),
             integer(0),pow(z2, integer(2)),  integer(0),integer(0),
             integer(0),pow(z2, integer(3)),  integer(0),integer(0),
             integer(0),integer(0),  integer(1),integer(0),
             integer(0),integer(0),  pow(z2, integer(1)),integer(0),
             integer(0),integer(0),  pow(z2, integer(2)),integer(0),
             integer(0),integer(0),  pow(z2, integer(3)),integer(0),
             integer(0),integer(0),  integer(0),integer(1),
             integer(0),integer(0),  integer(0),pow(z2, integer(1)),
            integer(0),integer(0),  integer(0),pow(z2, integer(2)),
            integer(0),integer(0),  integer(0),pow(z2, integer(3)),
         });
	

    auto c1_1=complex_double(std::complex<double>(0.93829,0));
    auto c2_1=complex_double(std::complex<double>(-0.058946,-0.019517));
    auto c3_1=complex_double(std::complex<double>(-0.062113,0.0014363));
    auto c4_1=complex_double(std::complex<double>(-0.061953,0.0046716));
    auto c5_1=complex_double(std::complex<double>(-0.011639,-0.061032));
    auto c6_1=complex_double(std::complex<double>(-0.049353,-0.037756));
    auto c7_1=complex_double(std::complex<double>(-0.055657,-0.027629));
    auto c8_1=complex_double(std::complex<double>(-0.021821,-0.058163));
    auto c9_1=complex_double(std::complex<double>(0.057387,-0.023815));
    auto c10_1=complex_double(std::complex<double>(0.045385,-0.04244));
    auto c11_1=complex_double(std::complex<double>(-0.025132,-0.056818));
    auto c12_1=complex_double(std::complex<double>(0.020801,-0.058553));
    auto c13_1=complex_double(std::complex<double>(0.039455,0.047978));
    auto c14_1=complex_double(std::complex<double>(0.056784,0.025225));
    auto c15_1=complex_double(std::complex<double>(0.0522,0.033674));
    auto c16_1=complex_double(std::complex<double>(0.061757,-0.0067829));

    auto c1_2=complex_double(std::complex<double>(-0.058946,0.019517));
    auto c2_2=complex_double(std::complex<double>(0.93752,0));
    auto c3_2=complex_double(std::complex<double>(-0.058881,0.021017));
    auto c4_2=complex_double(std::complex<double>(-0.057705,0.024058));
    auto c5_2=complex_double(std::complex<double>(-0.030422,-0.054621));
    auto c6_2=complex_double(std::complex<double>(-0.059088,-0.020458));
    auto c7_2=complex_double(std::complex<double>(-0.061906,-0.0087896));
    auto c8_2=complex_double(std::complex<double>(-0.039242,-0.04866));
    auto c9_2=complex_double(std::complex<double>(0.047288,-0.0409));
    auto c10_2=complex_double(std::complex<double>(0.029932,-0.054897));
    auto c11_2=complex_double(std::complex<double>(-0.041979,-0.046329));
    auto c12_2=complex_double(std::complex<double>(0.0013511,-0.062513));
    auto c13_2=complex_double(std::complex<double>(0.052865,0.033354));
    auto c14_2=complex_double(std::complex<double>(0.062223,0.0061373));
    auto c15_2=complex_double(std::complex<double>(0.060516,0.015658));
    auto c16_2=complex_double(std::complex<double>(0.05685,-0.026013));

    auto c1_3=complex_double(std::complex<double>(-0.062113,-0.0014363));
    auto c2_3=complex_double(std::complex<double>(-0.058881,-0.021017));
    auto c3_3=complex_double(std::complex<double>(0.93744,0));
    auto c4_3=complex_double(std::complex<double>(-0.062471,0.0032604));
    auto c5_3=complex_double(std::complex<double>(-0.010295,-0.061706));
    auto c6_3=complex_double(std::complex<double>(-0.0488,-0.039154));
    auto c7_3=complex_double(std::complex<double>(-0.055381,-0.029106));
    auto c8_3=complex_double(std::complex<double>(-0.020612,-0.059055));
    auto c9_3=complex_double(std::complex<double>(0.05832,-0.022636));
    auto c10_3=complex_double(std::complex<double>(0.046672,-0.041664));
    auto c11_3=complex_double(std::complex<double>(-0.023975,-0.057779));
    auto c12_3=complex_double(std::complex<double>(0.022301,-0.058456));
    auto c13_3=complex_double(std::complex<double>(0.038599,0.049213));
    auto c14_3=complex_double(std::complex<double>(0.056572,0.026714));
    auto c15_3=complex_double(std::complex<double>(0.051761,0.035111));
    auto c16_3=complex_double(std::complex<double>(0.062323,-0.0053902));

    auto c1_4=complex_double(std::complex<double>(-0.061953,-0.0046716));
    auto c2_4=complex_double(std::complex<double>(-0.057705,-0.024058));
    auto c3_4=complex_double(std::complex<double>(-0.062471,-0.0032604));
    auto c4_4=complex_double(std::complex<double>(0.93744,0));
    auto c5_4=complex_double(std::complex<double>(-0.0070647,-0.062158));
    auto c6_4=complex_double(std::complex<double>(-0.046693,-0.041644));
    auto c7_4=complex_double(std::complex<double>(-0.053788,-0.031953));
    auto c8_4=complex_double(std::complex<double>(-0.017505,-0.060049));
    auto c9_4=complex_double(std::complex<double>(0.05942,-0.019566));
    auto c10_4=complex_double(std::complex<double>(0.04878,-0.039174));
    auto c11_4=complex_double(std::complex<double>(-0.020931,-0.058949));
    auto c12_4=complex_double(std::complex<double>(0.025317,-0.057213));
    auto c13_4=complex_double(std::complex<double>(0.035981,0.051158));
    auto c14_4=complex_double(std::complex<double>(0.055103,0.029626));
    auto c15_4=complex_double(std::complex<double>(0.04986,0.037761));
    auto c16_4=complex_double(std::complex<double>(0.062519,-0.0021346));

    auto c1_5=complex_double(std::complex<double>(-0.011639,0.061032));
    auto c2_5=complex_double(std::complex<double>(-0.030422,0.054621));
    auto c3_5=complex_double(std::complex<double>(-0.010295,0.061706));
    auto c4_5=complex_double(std::complex<double>(-0.0070647,0.062158));
    auto c5_5=complex_double(std::complex<double>(0.93744,0));
    auto c6_5=complex_double(std::complex<double>(-0.046653,0.041693));
    auto c7_5=complex_double(std::complex<double>(-0.037825,0.049838));
    auto c8_5=complex_double(std::complex<double>(-0.061644,0.010613));
    auto c9_5=complex_double(std::complex<double>(-0.012731,-0.061252));
    auto c10_5=complex_double(std::complex<double>(-0.033416,-0.052894));
    auto c11_5=complex_double(std::complex<double>(-0.060938,0.01414));
    auto c12_5=complex_double(std::complex<double>(-0.05399,-0.031618));
    auto c13_5=complex_double(std::complex<double>(0.054896,-0.029975));
    auto c14_5=complex_double(std::complex<double>(0.03566,-0.051406));
    auto c15_5=complex_double(std::complex<double>(0.043152,-0.045279));
    auto c16_5=complex_double(std::complex<double>(0.0049395,-0.062363));

    auto c1_6=complex_double(std::complex<double>(-0.049353,0.037756));
    auto c2_6=complex_double(std::complex<double>(-0.059088,0.020458));
    auto c3_6=complex_double(std::complex<double>(-0.0488,0.039154));
    auto c4_6=complex_double(std::complex<double>(-0.046693,0.041644));
    auto c5_6=complex_double(std::complex<double>(-0.046653,-0.041693));
    auto c6_6=complex_double(std::complex<double>(0.93742,0));
    auto c7_6=complex_double(std::complex<double>(-0.06142,0.011957));
    auto c8_6=complex_double(std::complex<double>(-0.053042,-0.033168));
    auto c9_6=complex_double(std::complex<double>(0.031327,-0.054161));
    auto c10_6=complex_double(std::complex<double>(0.010331,-0.061714));
    auto c11_6=complex_double(std::complex<double>(-0.054867,-0.030067));
    auto c12_6=complex_double(std::complex<double>(-0.01919,-0.059559));
    auto c13_6=complex_double(std::complex<double>(0.060913,0.014232));
    auto c14_6=complex_double(std::complex<double>(0.060852,-0.014569));
    auto c15_6=complex_double(std::complex<double>(0.062355,-0.0050072));
    auto c16_6=complex_double(std::complex<double>(0.045244,-0.043213));

    auto c1_7=complex_double(std::complex<double>(-0.055657,0.027629));
    auto c2_7=complex_double(std::complex<double>(-0.061906,0.0087896));
    auto c3_7=complex_double(std::complex<double>(-0.055381,0.029106));
    auto c4_7=complex_double(std::complex<double>(-0.053788,0.031953));
    auto c5_7=complex_double(std::complex<double>(-0.037825,-0.049838));
    auto c6_7=complex_double(std::complex<double>(-0.06142,-0.011957));
    auto c7_7=complex_double(std::complex<double>(0.93743,0));
    auto c8_7=complex_double(std::complex<double>(-0.045725,-0.042691));
    auto c9_7=complex_double(std::complex<double>(0.041098,-0.047175));
    auto c10_7=complex_double(std::complex<double>(0.021933,-0.058601));
    auto c11_7=complex_double(std::complex<double>(-0.048108,-0.039996));
    auto c12_7=complex_double(std::complex<double>(-0.0074552,-0.062127));
    auto c13_7=complex_double(std::complex<double>(0.05707,0.025609));
    auto c14_7=complex_double(std::complex<double>(0.062513,-0.0026724));
    auto c15_7=complex_double(std::complex<double>(0.062161,0.0070005));
    auto c16_7=complex_double(std::complex<double>(0.052667,-0.03377));

    auto c1_8=complex_double(std::complex<double>(-0.021821,0.058163));
    auto c2_8=complex_double(std::complex<double>(-0.039242,0.04866));
    auto c3_8=complex_double(std::complex<double>(-0.020612,0.059055));
    auto c4_8=complex_double(std::complex<double>(-0.017505,0.060049));
    auto c5_8=complex_double(std::complex<double>(-0.061644,-0.010613));
    auto c6_8=complex_double(std::complex<double>(-0.053042,0.033168));
    auto c7_8=complex_double(std::complex<double>(-0.045725,0.042691));
    auto c8_8=complex_double(std::complex<double>(0.93746,0));
    auto c9_8=complex_double(std::complex<double>(-0.0021538,-0.062514));
    auto c10_8=complex_double(std::complex<double>(-0.023954,-0.057788));
    auto c11_8=complex_double(std::complex<double>(-0.062444,0.003596));
    auto c12_8=complex_double(std::complex<double>(-0.047836,-0.040313));
    auto c13_8=complex_double(std::complex<double>(0.059177,-0.020223));
    auto c14_8=complex_double(std::complex<double>(0.043858,-0.044604));
    auto c15_8=complex_double(std::complex<double>(0.050201,-0.037295));
    auto c16_8=complex_double(std::complex<double>(0.015446,-0.060611));

    auto c1_9=complex_double(std::complex<double>(0.057387,0.023815));
    auto c2_9=complex_double(std::complex<double>(0.047288,0.0409));
    auto c3_9=complex_double(std::complex<double>(0.05832,0.022636));
    auto c4_9=complex_double(std::complex<double>(0.05942,0.019566));
    auto c5_9=complex_double(std::complex<double>(-0.012731,0.061252));
    auto c6_9=complex_double(std::complex<double>(0.031327,0.054161));
    auto c7_9=complex_double(std::complex<double>(0.041098,0.047175));
    auto c8_9=complex_double(std::complex<double>(-0.0021538,0.062514));
    auto c9_9=complex_double(std::complex<double>(0.93744,0));
    auto c10_9=complex_double(std::complex<double>(-0.058588,0.021954));
    auto c11_9=complex_double(std::complex<double>(0.0014439,0.062541));
    auto c12_9=complex_double(std::complex<double>(-0.041943,0.046427));
    auto c13_9=complex_double(std::complex<double>(-0.018177,-0.059848));
    auto c14_9=complex_double(std::complex<double>(-0.043074,-0.045375));
    auto c15_9=complex_double(std::complex<double>(-0.03555,-0.051463));
    auto c16_9=complex_double(std::complex<double>(-0.060053,-0.017527));

    auto c1_10=complex_double(std::complex<double>(0.045385,0.04244));
    auto c2_10=complex_double(std::complex<double>(0.029932,0.054897));
    auto c3_10=complex_double(std::complex<double>(0.046672,0.041664));
    auto c4_10=complex_double(std::complex<double>(0.04878,0.039174));
    auto c5_10=complex_double(std::complex<double>(-0.033416,0.052894));
    auto c6_10=complex_double(std::complex<double>(0.010331,0.061714));
    auto c7_10=complex_double(std::complex<double>(0.021933,0.058601));
    auto c8_10=complex_double(std::complex<double>(-0.023954,0.057788));
    auto c9_10=complex_double(std::complex<double>(-0.058588,-0.021954));
    auto c10_10=complex_double(std::complex<double>(0.93743,0));
    auto c11_10=complex_double(std::complex<double>(-0.020594,0.059075));
    auto c12_10=complex_double(std::complex<double>(-0.055571,0.02876));
    auto c13_10=complex_double(std::complex<double>(0.0039792,-0.062425));
    auto c14_10=complex_double(std::complex<double>(-0.024416,-0.057609));
    auto c15_10=complex_double(std::complex<double>(-0.015233,-0.06067));
    auto c16_10=complex_double(std::complex<double>(-0.050088,-0.037487));

    auto c1_11=complex_double(std::complex<double>(-0.025132,0.056818));
    auto c2_11=complex_double(std::complex<double>(-0.041979,0.046329));
    auto c3_11=complex_double(std::complex<double>(-0.023975,0.057779));
    auto c4_11=complex_double(std::complex<double>(-0.020931,0.058949));
    auto c5_11=complex_double(std::complex<double>(-0.060938,-0.01414));
    auto c6_11=complex_double(std::complex<double>(-0.054867,0.030067));
    auto c7_11=complex_double(std::complex<double>(-0.048108,0.039996));
    auto c8_11=complex_double(std::complex<double>(-0.062444,-0.003596));
    auto c9_11=complex_double(std::complex<double>(0.0014439,-0.062541));
    auto c10_11=complex_double(std::complex<double>(-0.020594,-0.059075));
    auto c11_11=complex_double(std::complex<double>(0.93745,0));
    auto c12_11=complex_double(std::complex<double>(-0.045444,-0.043001));
    auto c13_11=complex_double(std::complex<double>(0.060248,-0.016789));
    auto c14_11=complex_double(std::complex<double>(0.046355,-0.042013));
    auto c15_11=complex_double(std::complex<double>(0.052267,-0.034351));
    auto c16_11=complex_double(std::complex<double>(0.018907,-0.059629));

    auto c1_12=complex_double(std::complex<double>(0.020801,0.058553));
    auto c2_12=complex_double(std::complex<double>(0.0013511,0.062513));
    auto c3_12=complex_double(std::complex<double>(0.022301,0.058456));
    auto c4_12=complex_double(std::complex<double>(0.025317,0.057213));
    auto c5_12=complex_double(std::complex<double>(-0.05399,0.031618));
    auto c6_12=complex_double(std::complex<double>(-0.01919,0.059559));
    auto c7_12=complex_double(std::complex<double>(-0.0074552,0.062127));
    auto c8_12=complex_double(std::complex<double>(-0.047836,0.040313));
    auto c9_12=complex_double(std::complex<double>(-0.041943,-0.046427));
    auto c10_12=complex_double(std::complex<double>(-0.055571,-0.02876));
    auto c11_12=complex_double(std::complex<double>(-0.045444,0.043001));
    auto c12_12=complex_double(std::complex<double>(0.93743,0));
    auto c13_12=complex_double(std::complex<double>(0.032227,-0.053613));
    auto c14_12=complex_double(std::complex<double>(0.0047948,-0.062387));
    auto c15_12=complex_double(std::complex<double>(0.014357,-0.060885));
    auto c16_12=complex_double(std::complex<double>(-0.027255,-0.056316));

    auto c1_13=complex_double(std::complex<double>(0.039455,-0.047978));
    auto c2_13=complex_double(std::complex<double>(0.052865,-0.033354));
    auto c3_13=complex_double(std::complex<double>(0.038599,-0.049213));
    auto c4_13=complex_double(std::complex<double>(0.035981,-0.051158));
    auto c5_13=complex_double(std::complex<double>(0.054896,0.029975));
    auto c6_13=complex_double(std::complex<double>(0.060913,-0.014232));
    auto c7_13=complex_double(std::complex<double>(0.05707,-0.025609));
    auto c8_13=complex_double(std::complex<double>(0.059177,0.020223));
    auto c9_13=complex_double(std::complex<double>(-0.018177,0.059848));
    auto c10_13=complex_double(std::complex<double>(0.0039792,0.062425));
    auto c11_13=complex_double(std::complex<double>(0.060248,0.016789));
    auto c12_13=complex_double(std::complex<double>(0.032227,0.053613));
    auto c13_13=complex_double(std::complex<double>(0.93747,0));
    auto c14_13=complex_double(std::complex<double>(-0.055922,0.028023));
    auto c15_13=complex_double(std::complex<double>(-0.05956,0.019056));
    auto c16_13=complex_double(std::complex<double>(-0.034214,0.052356));

    auto c1_14=complex_double(std::complex<double>(0.056784,-0.025225));
    auto c2_14=complex_double(std::complex<double>(0.062223,-0.0061373));
    auto c3_14=complex_double(std::complex<double>(0.056572,-0.026714));
    auto c4_14=complex_double(std::complex<double>(0.055103,-0.029626));
    auto c5_14=complex_double(std::complex<double>(0.03566,0.051406));
    auto c6_14=complex_double(std::complex<double>(0.060852,0.014569));
    auto c7_14=complex_double(std::complex<double>(0.062513,0.0026724));
    auto c8_14=complex_double(std::complex<double>(0.043858,0.044604));
    auto c9_14=complex_double(std::complex<double>(-0.043074,0.045375));
    auto c10_14=complex_double(std::complex<double>(-0.024416,0.057609));
    auto c11_14=complex_double(std::complex<double>(0.046355,0.042013));
    auto c12_14=complex_double(std::complex<double>(0.0047948,0.062387));
    auto c13_14=complex_double(std::complex<double>(-0.055922,-0.028023));
    auto c14_14=complex_double(std::complex<double>(0.93743,0));
    auto c15_14=complex_double(std::complex<double>(-0.061803,-0.0096488));
    auto c16_14=complex_double(std::complex<double>(-0.054059,0.031489));

    auto c1_15=complex_double(std::complex<double>(0.0522,-0.033674));
    auto c2_15=complex_double(std::complex<double>(0.060516,-0.015658));
    auto c3_15=complex_double(std::complex<double>(0.051761,-0.035111));
    auto c4_15=complex_double(std::complex<double>(0.04986,-0.037761));
    auto c5_15=complex_double(std::complex<double>(0.043152,0.045279));
    auto c6_15=complex_double(std::complex<double>(0.062355,0.0050072));
    auto c7_15=complex_double(std::complex<double>(0.062161,-0.0070005));
    auto c8_15=complex_double(std::complex<double>(0.050201,0.037295));
    auto c9_15=complex_double(std::complex<double>(-0.03555,0.051463));
    auto c10_15=complex_double(std::complex<double>(-0.015233,0.06067));
    auto c11_15=complex_double(std::complex<double>(0.052267,0.034351));
    auto c12_15=complex_double(std::complex<double>(0.014357,0.060885));
    auto c13_15=complex_double(std::complex<double>(-0.05956,-0.019056));
    auto c14_15=complex_double(std::complex<double>(-0.061803,0.0096488));
    auto c15_15=complex_double(std::complex<double>(0.93746,0));
    auto c16_15=complex_double(std::complex<double>(-0.048543,0.03944));

    auto c1_16=complex_double(std::complex<double>(0.061757,0.0067829));
    auto c2_16=complex_double(std::complex<double>(0.05685,0.026013));
    auto c3_16=complex_double(std::complex<double>(0.062323,0.0053902));
    auto c4_16=complex_double(std::complex<double>(0.062519,0.0021346));
    auto c5_16=complex_double(std::complex<double>(0.0049395,0.062363));
    auto c6_16=complex_double(std::complex<double>(0.045244,0.043213));
    auto c7_16=complex_double(std::complex<double>(0.052667,0.03377));
    auto c8_16=complex_double(std::complex<double>(0.015446,0.060611));
    auto c9_16=complex_double(std::complex<double>(-0.060053,0.017527));
    auto c10_16=complex_double(std::complex<double>(-0.050088,0.037487));
    auto c11_16=complex_double(std::complex<double>(0.018907,0.059629));
    auto c12_16=complex_double(std::complex<double>(-0.027255,0.056316));
    auto c13_16=complex_double(std::complex<double>(-0.034214,-0.052356));
    auto c14_16=complex_double(std::complex<double>(-0.054059,-0.031489));
    auto c15_16=complex_double(std::complex<double>(-0.048543,-0.03944));
    auto c16_16=complex_double(std::complex<double>(0.93744,0));

    DenseMatrix Gn2 = DenseMatrix(16,16,{
		c1_1,	c1_2,c1_3,c1_4,c1_5,c1_6,c1_7,c1_8,c1_9,c1_10,c1_11,c1_12,c1_13,c1_14,c1_15,c1_16,
		c2_1,c2_2,c2_3,c2_4,c2_5,c2_6,c2_7,c2_8,c2_9,	c2_10,c2_11,c2_12,c2_13,c2_14,c2_15,c2_16,
		c3_1,c3_2,c3_3,c3_4,c3_5,c3_6,c3_7,c3_8,c3_9,c3_10,c3_11,c3_12,c3_13,c3_14,c3_15,c3_16,
		c4_1,	c4_2,c4_3,c4_4,c4_5,c4_6,c4_7,c4_8,c4_9,c4_10,c4_11,c4_12,c4_13,c4_14,c4_15,c4_16,
		c5_1,c5_2,c5_3,c5_4,c5_5,c5_6,c5_7,c5_8,c5_9,c5_10,c5_11,c5_12,c5_13,c5_14,c5_15,c5_16,
		c6_1,c6_2,c6_3,c6_4,c6_5,c6_6,c6_7,c6_8,c6_9,c6_10,c6_11,c6_12,c6_13,c6_14,c6_15,c6_16,
		c7_1,c7_2,c7_3,	c7_4,c7_5,c7_6,c7_7,c7_8,c7_9,c7_10,c7_11,c7_12,c7_13,c7_14,c7_15,c7_16,
		c8_1,c8_2,c8_3,c8_4,c8_5,c8_6,c8_7,c8_8,c8_9,c8_10,c8_11,c8_12,c8_13,c8_14,c8_15,c8_16,
		c9_1,c9_2,c9_3,c9_4,c9_5,c9_6,c9_7,c9_8,c9_9,c9_10,c9_11,c9_12,c9_13,c9_14,c9_15,c9_16,
		c10_1,c10_2,c10_3,c10_4,c10_5,c10_6,c10_7,c10_8,c10_9,c10_10,c10_11,c10_12,c10_13,c10_14,c10_15,c10_16,
		c11_1,c11_2,c11_3,c11_4,c11_5,c11_6,c11_7,c11_8,c11_9,c11_10,c11_11,c11_12,c11_13,c11_14,c11_15,c11_16,
		c12_1,c12_2,c12_3,c12_4,c12_5,c12_6,c12_7,c12_8,c12_9,c12_10,c12_11,c12_12,c12_13,c12_14,c12_15,c12_16,
		c13_1,c13_2,c13_3,c13_4,c13_5,c13_6,c13_7,c13_8,c13_9,c13_10,c13_11,c13_12,c13_13,c13_14,c13_15,c13_16,
		c14_1,c14_2,c14_3,c14_4,c14_5,c14_6,c14_7,c14_8,c14_9,c14_10,c14_11,c14_12,c14_13,c14_14,c14_15,c14_16,
		c15_1,c15_2,c15_3,c15_4,c15_5,c15_6,c15_7,c15_8,c15_9,c15_10,c15_11,c15_12,c15_13,c15_14,c15_15,c15_16,
		c16_1,c16_2,c16_3,c16_4,c16_5,c16_6,c16_7,c16_8,c16_9,c16_10,c16_11,c16_12,c16_13,c16_14,c16_15,c16_16
		});

    DenseMatrix Qz2_1=DenseMatrix(4,16);
    DenseMatrix Qz2_2=DenseMatrix(4,4);

    DenseMatrix Qz1_1=DenseMatrix(4,16);
    DenseMatrix Qz1_2=DenseMatrix(4,4);
    mul_dense_dense(temp1,Gn2,Qz2_1);
    mul_dense_dense(Qz2_1,temp2,Qz2_2);

    mul_dense_dense(temp4,Gn2,Qz1_1);
    mul_dense_dense(Qz1_1,temp5,Qz1_2);
    std::cout << Qz2_2 << std::endl;
    auto detQz2=Qz2_2.det();
    std::cout<<*detQz2<<std::endl;
    auto detQz1=Qz1_2.det();
    std::cout << *detQz1 << std::endl;

    auto s1=solve(detQz2,z1);
    std::cout << *s1 << std::endl;
    auto s2=solve(detQz1,z2);
    std::cout<<*s1<<std::endl;
    std::cout<<*I<<std::endl;
    // clang-format on

    return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant