From bde546ea25cc5e4dbf3d5f26617362a4c83418c5 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Tue, 9 May 2006 09:43:30 +0000 Subject: [PATCH] Added getLastUnif() to hybrid engine for querying uniformisation rate. git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@50 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/include/PrismHybrid.h | 8 ++++++++ prism/include/PrismHybridGlob.h | 3 +++ prism/src/hybrid/PH_StochBoundedUntil.cc | 1 + prism/src/hybrid/PH_StochCumulReward.cc | 1 + prism/src/hybrid/PH_StochTransient.cc | 1 + prism/src/hybrid/PrismHybrid.cc | 12 ++++++++++++ prism/src/hybrid/PrismHybrid.java | 10 ++++++++++ 7 files changed, 36 insertions(+) diff --git a/prism/include/PrismHybrid.h b/prism/include/PrismHybrid.h index 04dcd484..590620b1 100644 --- a/prism/include/PrismHybrid.h +++ b/prism/include/PrismHybrid.h @@ -127,6 +127,14 @@ JNIEXPORT void JNICALL Java_hybrid_PrismHybrid_PH_1SetCompact JNIEXPORT jstring JNICALL Java_hybrid_PrismHybrid_PH_1GetErrorMessage (JNIEnv *, jclass); +/* + * Class: hybrid_PrismHybrid + * Method: PH_GetLastUnif + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_hybrid_PrismHybrid_PH_1GetLastUnif + (JNIEnv *, jclass); + /* * Class: hybrid_PrismHybrid * Method: PH_ProbBoundedUntil diff --git a/prism/include/PrismHybridGlob.h b/prism/include/PrismHybridGlob.h index 3105202b..af92785e 100644 --- a/prism/include/PrismHybridGlob.h +++ b/prism/include/PrismHybridGlob.h @@ -69,6 +69,9 @@ extern int num_sor_levels; // use "compact modified" sparse matrix storage? extern bool compact; +// details from numerical computation which may be queried +extern double last_unif; + //------------------------------------------------------------------------------ // macros, function prototypes diff --git a/prism/src/hybrid/PH_StochBoundedUntil.cc b/prism/src/hybrid/PH_StochBoundedUntil.cc index dc9f69a3..396fbaa7 100644 --- a/prism/src/hybrid/PH_StochBoundedUntil.cc +++ b/prism/src/hybrid/PH_StochBoundedUntil.cc @@ -162,6 +162,7 @@ jint mu // probs for multiplying // constant for uniformization unif = 1.02*max_diag; + last_unif = unif; // modify diagonals if (!compact_d) { diff --git a/prism/src/hybrid/PH_StochCumulReward.cc b/prism/src/hybrid/PH_StochCumulReward.cc index 9382cfe5..c0389aab 100644 --- a/prism/src/hybrid/PH_StochCumulReward.cc +++ b/prism/src/hybrid/PH_StochCumulReward.cc @@ -151,6 +151,7 @@ jdouble time // time bound // constant for uniformization unif = 1.02*max_diag; + last_unif = unif; // modify diagonals if (!compact_d) { diff --git a/prism/src/hybrid/PH_StochTransient.cc b/prism/src/hybrid/PH_StochTransient.cc index a9e540f4..dd32b1ff 100644 --- a/prism/src/hybrid/PH_StochTransient.cc +++ b/prism/src/hybrid/PH_StochTransient.cc @@ -148,6 +148,7 @@ jdouble time // time bound // constant for uniformization unif = 1.02*max_diag; + last_unif = unif; // modify diagonals if (!compact_d) { diff --git a/prism/src/hybrid/PrismHybrid.cc b/prism/src/hybrid/PrismHybrid.cc index e8143dd6..5dd3828f 100644 --- a/prism/src/hybrid/PrismHybrid.cc +++ b/prism/src/hybrid/PrismHybrid.cc @@ -72,6 +72,9 @@ bool compact; // error message char error_message[MAX_ERR_STRING_LEN]; +// details from numerical computation which may be queried +double last_unif; + //------------------------------------------------------------------------------ // cudd manager //------------------------------------------------------------------------------ @@ -254,6 +257,15 @@ JNIEXPORT jstring JNICALL Java_hybrid_PrismHybrid_PH_1GetErrorMessage(JNIEnv *en return env->NewStringUTF(error_message); } +//------------------------------------------------------------------------------ +// numerical computation detail queries +//------------------------------------------------------------------------------ + +JNIEXPORT jdouble JNICALL Java_hybrid_PrismHybrid_PH_1GetLastUnif(JNIEnv *env, jclass cls) +{ + return last_unif; +} + //------------------------------------------------------------------------------ // tidy up //------------------------------------------------------------------------------ diff --git a/prism/src/hybrid/PrismHybrid.java b/prism/src/hybrid/PrismHybrid.java index ddf36574..82dd2117 100644 --- a/prism/src/hybrid/PrismHybrid.java +++ b/prism/src/hybrid/PrismHybrid.java @@ -195,6 +195,16 @@ public class PrismHybrid return PH_GetErrorMessage(); } + //------------------------------------------------------------------------------ + // numerical computation detail queries + //------------------------------------------------------------------------------ + + private static native double PH_GetLastUnif(); + public static double getLastUnif() + { + return PH_GetLastUnif(); + } + //------------------------------------------------------------------------------ // JNI wrappers for blocks of hybrid code //------------------------------------------------------------------------------