hacks
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1668 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
0db94f615a
commit
93501eb171
43
C/stdpreds.c
43
C/stdpreds.c
@ -11,8 +11,12 @@
|
|||||||
* File: stdpreds.c *
|
* File: stdpreds.c *
|
||||||
* comments: General-purpose C implemented system predicates *
|
* comments: General-purpose C implemented system predicates *
|
||||||
* *
|
* *
|
||||||
* Last rev: $Date: 2006-05-19 14:31:32 $,$Author: vsc $ *
|
* Last rev: $Date: 2006-06-05 19:36:00 $,$Author: vsc $ *
|
||||||
* $Log: not supported by cvs2svn $
|
* $Log: not supported by cvs2svn $
|
||||||
|
* Revision 1.104 2006/05/19 14:31:32 vsc
|
||||||
|
* get rid of IntArrays and FloatArray code.
|
||||||
|
* include holes when calculating memory usage.
|
||||||
|
*
|
||||||
* Revision 1.103 2006/05/18 16:33:05 vsc
|
* Revision 1.103 2006/05/18 16:33:05 vsc
|
||||||
* fix info reported by memory manager under DL_MALLOC and SYSTEM_MALLOC
|
* fix info reported by memory manager under DL_MALLOC and SYSTEM_MALLOC
|
||||||
*
|
*
|
||||||
@ -2833,6 +2837,40 @@ p_loop(void) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if QSAR
|
||||||
|
static Int
|
||||||
|
p_in_range(void) {
|
||||||
|
Term t;
|
||||||
|
double i,j;
|
||||||
|
double d1;
|
||||||
|
double d2;
|
||||||
|
double d3;
|
||||||
|
|
||||||
|
t = Deref(ARG1);
|
||||||
|
if (IsFloatTerm(t)) i = FloatOfTerm(t); else i = IntegerOfTerm(t);
|
||||||
|
t = Deref(ARG4);
|
||||||
|
if (IsFloatTerm(t)) j = FloatOfTerm(t); else j = IntegerOfTerm(t);
|
||||||
|
d1 = i-j;
|
||||||
|
t = Deref(ARG2);
|
||||||
|
if (IsFloatTerm(t)) i = FloatOfTerm(t); else i = IntegerOfTerm(t);
|
||||||
|
t = Deref(ARG5);
|
||||||
|
if (IsFloatTerm(t)) j = FloatOfTerm(t); else j = IntegerOfTerm(t);
|
||||||
|
d2 = i-j;
|
||||||
|
t = Deref(ARG3);
|
||||||
|
if (IsFloatTerm(t)) i = FloatOfTerm(t); else i = IntegerOfTerm(t);
|
||||||
|
t = Deref(ARG6);
|
||||||
|
if (IsFloatTerm(t)) j = FloatOfTerm(t); else j = IntegerOfTerm(t);
|
||||||
|
d3 = i-j;
|
||||||
|
t = Deref(ARG7);
|
||||||
|
if (IsFloatTerm(t)) i = FloatOfTerm(t); else i = IntegerOfTerm(t);
|
||||||
|
t = Deref(ARG8);
|
||||||
|
if (IsFloatTerm(t)) j = FloatOfTerm(t); else j = IntegerOfTerm(t);
|
||||||
|
|
||||||
|
return fabs(sqrt(d1*d1 + d2*d2 + d3*d3)-i) <= j;
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static Int
|
static Int
|
||||||
p_max_tagged_integer(void) {
|
p_max_tagged_integer(void) {
|
||||||
return Yap_unify(ARG1, MkIntTerm(MAX_ABS_INT-1L));
|
return Yap_unify(ARG1, MkIntTerm(MAX_ABS_INT-1L));
|
||||||
@ -2952,6 +2990,9 @@ Yap_InitCPreds(void)
|
|||||||
Yap_InitCPred("euc_dist", 3, p_euc_dist, SafePredFlag);
|
Yap_InitCPred("euc_dist", 3, p_euc_dist, SafePredFlag);
|
||||||
Yap_InitCPred("loop", 0, p_loop, SafePredFlag);
|
Yap_InitCPred("loop", 0, p_loop, SafePredFlag);
|
||||||
#endif
|
#endif
|
||||||
|
#if QSAR
|
||||||
|
Yap_InitCPred("in_range", 8, p_in_range, SafePredFlag);
|
||||||
|
#endif
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
Yap_InitCPred("dump_active_goals", 0, p_dump_active_goals, SafePredFlag|SyncPredFlag);
|
Yap_InitCPred("dump_active_goals", 0, p_dump_active_goals, SafePredFlag|SyncPredFlag);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: jpl.c,v 1.10 2006-05-19 13:48:11 vsc Exp $
|
/* $Id: jpl.c,v 1.11 2006-06-05 19:36:00 vsc Exp $
|
||||||
|
|
||||||
Part of JPL -- SWI-Prolog/Java interface
|
Part of JPL -- SWI-Prolog/Java interface
|
||||||
|
|
||||||
@ -2201,6 +2201,35 @@ jni_SetByteArrayElement(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
%T jni_SetByteArrayElement(+term, +term, +term)
|
||||||
|
*/
|
||||||
|
static foreign_t
|
||||||
|
jni_SetDoubleArrayElement(
|
||||||
|
term_t ta1, // +Arg1
|
||||||
|
term_t ta2, // +Arg2
|
||||||
|
term_t ta3 // +Arg3
|
||||||
|
)
|
||||||
|
{
|
||||||
|
jboolean r; // Prolog exit/fail outcome
|
||||||
|
jdoubleArray p1;
|
||||||
|
jint i2;
|
||||||
|
jdouble i3;
|
||||||
|
|
||||||
|
if ( !jni_ensure_jvm() )
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
r =
|
||||||
|
JNI_term_to_double_jarray(env,ta1,&p1)
|
||||||
|
&& JNI_term_to_jint(ta2,&i2)
|
||||||
|
&& JNI_term_to_jdouble(ta3,&i3)
|
||||||
|
&& ( (*env)->SetDoubleArrayRegion(env,p1,i2,1,&i3) , TRUE );
|
||||||
|
|
||||||
|
return jni_check_exception() && r;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
%T jni_void( +integer, +term, +term, +term)
|
%T jni_void( +integer, +term, +term, +term)
|
||||||
*/
|
*/
|
||||||
@ -3902,6 +3931,7 @@ PL_extension predspecs[] =
|
|||||||
{ "jni_func", 5, jni_func_3_plc, 0 },
|
{ "jni_func", 5, jni_func_3_plc, 0 },
|
||||||
{ "jni_func", 6, jni_func_4_plc, 0 },
|
{ "jni_func", 6, jni_func_4_plc, 0 },
|
||||||
{ "jni_SetByteArrayElement", 3, jni_SetByteArrayElement, 0 },
|
{ "jni_SetByteArrayElement", 3, jni_SetByteArrayElement, 0 },
|
||||||
|
{ "jni_SetDoubleArrayElement", 3, jni_SetDoubleArrayElement, 0 },
|
||||||
{ "jpl_c_lib_version", 1, jpl_c_lib_version_1_plc, 0 },
|
{ "jpl_c_lib_version", 1, jpl_c_lib_version_1_plc, 0 },
|
||||||
{ "jpl_c_lib_version", 4, jpl_c_lib_version_4_plc, 0 },
|
{ "jpl_c_lib_version", 4, jpl_c_lib_version_4_plc, 0 },
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
|
Reference in New Issue
Block a user