Hi Philippe,

You can create another object, a matrix of bing int that stacks your bigint in a list, i.e.

x = tlist(["bigint","rep","signe"],[7654321;5678998;1234],1)
y = tlist(["bigint","rep","signe"],[3456789;5432112;9876],1)
X = tlist(["mbigint","entries"],list(x,y))

Then  you can overload the display for "mbigint" for instance with

function %mbigint_p(e)
    str = ""
    for i = 1:length(e.entries)
        for j =length(e.entries(i).rep):-1:1
            str =  sprintf("%s%d",str,e.entries(i).rep(j))
        end
        str = str +"\n"
    end
    printf(str)
endfunction

If you want to make matrix (not only vectors), then you need to add the size of the matrix as an attribute of "mbigint" and reshape the display accordingly.


Pierre.

Le 01.07.2016 10:41, philippe a écrit :
Hi,

I have created a simple data structure to handle "big integers" . It is
 based on scilab tlist  and named "bigint" . I have overloaded basic
unary/binary operators for bigint (like +,*,-,/,^,==,<,>,... ) :



-->x=bigint('123456789987654321')
 x  =


 123456789987654321

-->y=bigint('987654321123456789')
 y  =


 987654321123456789

-->z=x-y
z =


-864197531135802468



but now I want to create matrix of bigint  so I need to create
functions like %bigint_c_bigint   and %bigint_f_bigint . I try using
"cell" It's not exactly what I was expecting : matrix entries  are
displayed as tlist  instead of bigint display (modified via %bigint_p )



-->T=cell()
 T  =


     []



-->T(1).entries=x
 T  =


 tlist(["bigint","rep","signe"],[7654321;5678998;1234],1)

-->T(2).entries=y
 T  =


!tlist(["bigint","rep","signe"],[7654321;5678998;1234],1)  !
!                                                          !
!tlist(["bigint","rep","signe"],[3456789;5432112;9876],1)  !


-->T(3).entries=z
 T  =


!tlist(["bigint","rep","signe"],[7654321;5678998;1234],1)   !
!                                                           !
!tlist(["bigint","rep","signe"],[3456789;5432112;9876],1)   !
!                                                           !
!tlist(["bigint","rep","signe"],[5802468;9753113;8641],-1)  !



how could I get  a display like


-->T
T =


!  123456789987654321 !
!                     !
!  987654321123456789 !
!                     !
! -864197531135802468 !



actually I only get

-->T.entries
 ans  =


       ans(1)


 123456789987654321

       ans(2)


 987654321123456789

       ans(3)


 -864197531135802468



Philippe

_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

Reply via email to