Changeset 4b6d98 in git
- Timestamp:
- Jul 21, 2017, 6:17:15 PM (7 years ago)
- Branches:
- (u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
- Children:
- 99c34cc0dbf214fef21abb247bd17d346ebe019c
- Parents:
- 71274174f2b57cffff35fa4ea6f31e63d6456b56
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/coeffs/juliacf.cc
r712741 r4b6d98 23 23 24 24 #ifdef HAVE_JULIA 25 26 // Private interface should be hidden!!! 25 #include <julia.h> 26 27 struct jcf_struct 28 { 29 jl_value_t *val; 30 long pos; 31 } 32 typedef struct jcf_struct * jcf_number; 33 34 // julia helper routines: 35 // 36 number jcfNew(jl_value_t* v, const coeffs cf) 37 { 38 jcf_number r=(jcf_number)omAlloc(sizeof(jcf_struct)); 39 r->val=v; 40 // ???? 41 return (number)r; 42 } 43 44 void jcfFree(jcf_number n, const coeffs cf) 45 { 46 // ??? 47 } 27 48 28 49 #ifdef LDEBUG … … 30 51 #endif 31 52 32 /// Get a mapping function from src into the domain of this type: n_R33 static nMapFunc jcfSetMap(const coeffs src, const coeffs dst);34 35 53 static void jcfCoeffWrite (const coeffs r, BOOLEAN /*details*/) 36 54 { 37 assume( getCoeffType(r) == n_R ); 38 PrintS("Float()"); /* R */ 55 PrintS("juliacf"); 39 56 } 40 57 41 58 42 59 static BOOLEAN jcfGreaterZero (number k, const coeffs r) 43 {44 }45 46 static number jcfMult (number a,number b, const coeffs r)47 60 { 48 61 } … … 53 66 static number jcfInit (long i, const coeffs r) 54 67 { 68 jl_value_t *ii = jl_box_int64(i); 69 return jcfNew(ii,r); 55 70 } 56 71 … … 60 75 static long jcfInt(number &n, const coeffs r) 61 76 { 62 } 63 64 static int jcfSize(number n, const coeffs) 65 { 66 } 67 77 jcf_number aa=(jcf_number)n; 78 if (jl_is_int64(aa->val)) 79 { 80 long l=jl_unbox_int64(aa->val); 81 return l; 82 } 83 return 0; 84 } 85 86 static void jcfDelete)(number * a, const coeffs r) 87 { 88 jcf_number aa=(jcf_number)(*a); 89 jcfFree(aa,r); 90 *a=NULL; 91 } 68 92 static number jcfAdd (number a, number b, const coeffs r) 69 93 { 94 jcf_number aa=(jcf_number)a; 95 jcf_number bb=(jcf_number)b; 96 jl_function_t *func = jl_get_function(jl_base_module, "+"); 97 return jcfNew(jl_call2(func, aa->val, bb->val),r); 70 98 } 71 99 72 100 static number jcfSub (number a, number b, const coeffs r) 73 101 { 102 jcf_number aa=(jcf_number)a; 103 jcf_number bb=(jcf_number)b; 104 jl_function_t *func = jl_get_function(jl_base_module, "-"); 105 return jcfNew(jl_call2(func, aa->val, bb->val),r); 106 } 107 108 static number jcfMult (number a,number b, const coeffs r) 109 { 110 jcf_number aa=(jcf_number)a; 111 jcf_number bb=(jcf_number)b; 112 jl_function_t *func = jl_get_function(jl_base_module, "-"); 113 return jcfNew(jl_call2(func, aa->val, bb->val),r); 114 } 115 116 static number jcfDiv (number a,number b, const coeffs r) 117 { 118 jcf_number aa=(jcf_number)a; 119 jcf_number bb=(jcf_number)b; 120 jl_function_t *func = jl_get_function(jl_base_module, "/"); 121 return jcfNew(jl_call2(func, aa->val, bb->val),r); 74 122 } 75 123 76 124 static BOOLEAN jcfIsZero (number a, const coeffs r) 77 125 { 126 jcf_number aa=(jcf_number)a; 127 jl_value_t *ii = jl_box_int64(0); 128 jl_function_t *func = jl_get_function(jl_base_module, "=="); 129 jl_value_t *res=jl_call2(func, aa->val, ii); 130 if (jl_unbox_bool(res)) return TRUE; 131 else return FALSE; 78 132 } 79 133 80 134 static BOOLEAN jcfIsOne (number a, const coeffs r) 81 135 { 136 jcf_number aa=(jcf_number)a; 137 jl_value_t *ii = jl_box_int64(1); 138 jl_function_t *func = jl_get_function(jl_base_module, "=="); 139 jl_value_t *res=jl_call2(func, aa->val, ii); 140 if (jl_unbox_bool(res)) return TRUE; 141 else return FALSE; 82 142 } 83 143 84 144 static BOOLEAN jcfIsMOne (number a, const coeffs r) 85 145 { 86 } 87 88 static number jcfDiv (number a,number b, const coeffs r) 89 { 146 jcf_number aa=(jcf_number)a; 147 jl_value_t *ii = jl_box_int64(-1); 148 jl_function_t *func = jl_get_function(jl_base_module, "=="); 149 jl_value_t *res=jl_call2(func, aa->val, ii); 150 if (jl_unbox_bool(res)) return TRUE; 151 else return FALSE; 90 152 } 91 153 92 154 static number jcfInvers (number c, const coeffs r) 93 155 { 156 jl_value_t *ii = jl_box_int64(1); 157 jcf_number cc=(jcf_number)c; 158 jl_function_t *func = jl_get_function(jl_base_module, "/"); 159 return jcfNew(jl_call2(func, ii, cc->val),r); 94 160 } 95 161 96 162 static number jcfNeg (number c, const coeffs r) 97 163 { 164 // inplace negate: 165 jl_value_t *ii = jl_box_int64(-1); 166 jcf_number cc=(jcf_number)c; 167 jl_function_t *func = jl_get_function(jl_base_module, "*"); 168 cc->val=jl_call2(func, ii, cc->val); 169 return (number)cc; 98 170 } 99 171 100 172 static BOOLEAN jcfGreater (number a,number b, const coeffs r) 101 173 { 174 jcf_number aa=(jcf_number)a; 175 jcf_number bb=(jcf_number)b; 176 jl_function_t *func = jl_get_function(jl_base_module, ">"); 177 jl_value_t *res=jl_call2(func, aa->val, bb->val); 178 if (jl_unbox_bool(res)) return TRUE; 179 else return FALSE; 102 180 } 103 181 104 182 static BOOLEAN jcfEqual (number a,number b, const coeffs r) 105 183 { 184 jcf_number aa=(jcf_number)a; 185 jcf_number bb=(jcf_number)b; 186 jl_function_t *func = jl_get_function(jl_base_module, "=="); 187 jl_value_t *res=jl_call2(func, aa->val, bb->val); 188 if (jl_unbox_bool(res)) return TRUE; 189 else return FALSE; 106 190 } 107 191 108 192 static void jcfWrite (number a, const coeffs r) 109 193 { 194 jcf_number aa=(jcf_number)a; 195 jl_function_t *func = jl_get_function(jl_base_module, "string"); 196 jl_value_t *res=jl_call1(func, aa->val); 197 // ??? 198 // char *s=jl_unbox_charptr(res); 199 // StringAppendS(s); 110 200 } 111 201 … … 118 208 static const char * jcfRead (const char *s, number *a, const coeffs r) 119 209 { 120 210 int i=1; 211 s=eati(s,&i); 212 *a=jcfInit (i,r); 213 return s; 121 214 } 122 215 … … 127 220 static number jcfCopy(number a, const coeffs cf) 128 221 { 222 jcf_number aa=(jcf_number)a; 223 return jcfNew(aa->val,r); 129 224 } 130 225 … … 144 239 #endif 145 240 146 static number jcfMapP(number from, const coeffs aRing, const coeffs r)147 {148 }149 150 static number jcfMapLongR(number from, const coeffs aRing, const coeffs r)151 {152 }153 154 static number jcfMapC(number from, const coeffs aRing, const coeffs r)155 {156 }157 158 159 static number jcfMapQ(number from, const coeffs aRing, const coeffs r)160 {161 }162 163 static number jcfMapZ(number from, const coeffs aRing, const coeffs r)164 {165 }166 167 241 static nMapFunc jcfSetMap(const coeffs src, const coeffs dst) 168 242 { … … 172 246 static char* jcfCoeffString(const coeffs r) 173 247 { 174 return omStrDup(" Float()");248 return omStrDup("juliacf"); 175 249 } 176 250 … … 193 267 n->cfInit = jcfInit; 194 268 n->cfInt = jcfInt; 269 n->cfDelete=jcfDelete; 195 270 n->cfAdd = jcfAdd; 196 271 n->cfSub = jcfSub; -
m4/julia-check.m4
r712741 r4b6d98 6 6 AC_ARG_ENABLE(julia, 7 7 AS_HELP_STRING([--enable-julia], [Enables interface for Singular to julia]), 8 [ENABLE_JULIA="$enableval"], [ENABLE_JULIA=" "])8 [ENABLE_JULIA="$enableval"], [ENABLE_JULIA="no"]) 9 9 10 10 AC_MSG_CHECKING(whether to check for julia interface)
Note: See TracChangeset
for help on using the changeset viewer.