From 11975cebfb62747c6f7bc546e164efdfcaeb7f6b Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 6 May 2025 21:56:39 -0400 Subject: [PATCH] update --- build_linux64/libamscppperm1.linux64.a | Bin 2976 -> 5524 bytes build_linux64/objstore/permutation_basic.o | Bin 0 -> 2264 bytes include/amscppperm1/amscppperm1.hpp | 21 +++- src/amscppperm1/permutation_basic.cpp | 106 +++++++++++++++++++++ 4 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 build_linux64/objstore/permutation_basic.o create mode 100644 src/amscppperm1/permutation_basic.cpp diff --git a/build_linux64/libamscppperm1.linux64.a b/build_linux64/libamscppperm1.linux64.a index a5d170199e66ea0817c603746a329cf3b1d2e666..ac64061ea46ffe699d56c9d757be4536bb7deab7 100644 GIT binary patch delta 1502 zcmcgsUr19?7(e&w+;*M0GSr8VJ%u8)KmM6!h*BqRJ%|y53S%xcxS($76dyKbEQ8C{ zP>zIAgy2h0Nl+m@SwX9w_T)nk;lqT{76}a+IjHZue-5Yu=KD#=BCrcf1|G@FgDp58krdDyd4+{ z2PdS!D3wYA?lx(Bcx1*O4*JK`8I}5_11TOY;-3zTO2hO}xJ?g339UlEgHw$J5S!l)GaqCg_fi z9`)Hns)&vJtZw-26XhK_noZCG2IA2ynP~=x11CZA$Yp92nqTPW6k4cWe<#yIoaVvF zchPKQ2gsZ6jXGjH>wsFKJhd(R(h0iz2M~|Opk}Q?({dt>^*U)bYTm#FGNuhA?rnxc zkc?Bzq6LL!WtvaW98#If3eAZt;=;)}bVY@3iwia$1U&i`Eyzh3v>c3cNyQEcO-VH+ zM)UEp0vD$_OzooS$n#9QuFhDb;iw`BqHbXSy)O#g{j|SbIhvNIQXl9Zr?)S20s2v* zH7#<2bg#6#qP8TcMrDdG1?@=7 zTcX}t=;W2+;i=ujGrWXdbU{B3DN{)GI;=-?s*1egJ9xsW$j6M?SdHe`y2;JHnl8pf zJPLZuexE;IRS~n9E#RI4JBK{rI}S#iPpJtQA3z>3jzcj%QjABC2h8J8jK{SFkki2W z_$n5va9yth{{+ErNrS2jrYqq!2wVXRt8qUF97gamyEoLy)w6Wj7<*$gWz>DHa&|Zz~I+7_RYM- zJ9+k$Z(!S&dg}@n1GpGx_3}ZU_42i>-`Z$Q7q#gdYd8N`3)+Q7ewAlug>LI6)&;Dv oyF!OWuQbTs3SR3q6b^XCxJs{8-3oZithdt3H=5XkGF-*}7xWIUOZBWB_<2^K@wGKS3?7%y-E07!!jzW@LL diff --git a/build_linux64/objstore/permutation_basic.o b/build_linux64/objstore/permutation_basic.o new file mode 100644 index 0000000000000000000000000000000000000000..3fa13c34f1f296817618c17f099925d35210c2d9 GIT binary patch literal 2264 zcmbtTO=uHQ5Plo`<4?6!iwa7~Nh-B#Q(K{}NT5DlL`qcxB9?TMZf&snG1*8ei4|gn zWi5E{Q1K#o@uU|KkEI1uJ@w?lQx7Qw5}{(iU;}mL?R#mm%|UeFy_xyucW2(t(yNyo zl0*bavM`LC@m1l2g*jfUY>v%NEU*WLQKzrgcTkQNSraAGW8ZEzxsq=d#c1*KGPyiF zJm~E7_~Icw?sU22KDnpc6=$mJVQ;V8(|3x)xGF*#;IzTP=XZI;LmY%GBDM<-QoF^7 z^x!&?5^d7)mge2h;ANZu91oI$7d_DS#4)_TX%-wnMcaAAfxhDKaPfkJpy z>{`X1L>%ZTUKM-VDu7rW!bjUcer(k-!8f6`mX3mYs0wG_0$2~nh0eYKup1oj=c!ol zfJHg}n&Yfzz(_=k2IIP_2f`t*PmKlqvOf|b-diJQ)nKd-tpk&)Uk^tE>NE}17+n2< z(1e!o>S1q?Ni;ATu(|YF7Vmv^IxsSt^MP!%lKY_zVQC>4d9y) zxD#X~cpvOA1ui!i1TN+^Zo|dA9@%g)FCxcgg1YJhu176CC8Ve}t;)KV(1|>u>MD_a zu^5s4;b2e;0Tv4DnhbBZJEp7tyIj8$ip!B`80M?b5SeArro59;HK_3p{*O5!97ok; zOXKGH85~Fz@v&Br;~?RT-4(4#wg?g>=kfq zFksGqjdwvT<`jK`$Vk-3{M97t3qA-&Ay@mo{LB8YKu|LryZb8+IIEL_EaoR*9|&0A z9>2(e1>wlKJ$?-Ediz`9`y1zRxIc^)@nV1VYGcSvzK}Pl0PTZ=kUf46$AQ%num8Lj Y-7)KfV7KocLpt%N2b#86<+ktY4-=ZBa{vGU literal 0 HcmV?d00001 diff --git a/include/amscppperm1/amscppperm1.hpp b/include/amscppperm1/amscppperm1.hpp index 4ed5ee9..e40581b 100644 --- a/include/amscppperm1/amscppperm1.hpp +++ b/include/amscppperm1/amscppperm1.hpp @@ -11,7 +11,25 @@ namespace ams namespace perm { -//Buffer operations +//Basic operations on preallocated buffers +//for later C library export + +int factorial(int n); + +int index_to_mindex(int index, int *mindex, int ndim); + +int mindex_to_index(int *mindex, int ndim); +void mindex_to_perm(int *mindex, int *perm, int ndim); +void perm_to_mindex(int *perm, int *mindex, int ndim); + +bool perm_valid(int *perm, int ndim); + +bool mindex_valid(int *mindex, int ndim); + +void index_to_perm(int index, int *perm, int ndim); +int perm_to_index(int *perm, int ndim); + + //Permutation class @@ -22,6 +40,7 @@ public: int *data; permutation(); + permutation(int _dim); ~permutation(); }; diff --git a/src/amscppperm1/permutation_basic.cpp b/src/amscppperm1/permutation_basic.cpp new file mode 100644 index 0000000..74833cc --- /dev/null +++ b/src/amscppperm1/permutation_basic.cpp @@ -0,0 +1,106 @@ +#include + +namespace ams +{ +namespace perm +{ + + //basic factorial found with integer loop + int factorial(int n) + { + int I; + int ret = 0; + if(n>=0) + { + ret = 1; + for(I=0;I=0 && index=(ndim-I)) + { + ret = 0; + break; + } + } + return ret; + } + + int mindex_to_index(int *mindex, int ndim) + { + int ret = -1; + int I; + int K; + if(mindex_valid(mindex,ndim)) + { + K = 1; + ret = 0; + for(I=0;I