[Python-checkins] r81715 - python/branches/py3k-cdecimal/Modules/cdecimal/context.c

stefan.krah python-checkins at python.org
Sat Jun 5 09:51:13 CEST 2010


Author: stefan.krah
Date: Sat Jun  5 09:51:13 2010
New Revision: 81715

Log:
Remove mpd_extcontext (only from the library) and add mpd_ieee_context.




Modified:
   python/branches/py3k-cdecimal/Modules/cdecimal/context.c

Modified: python/branches/py3k-cdecimal/Modules/cdecimal/context.c
==============================================================================
--- python/branches/py3k-cdecimal/Modules/cdecimal/context.c	(original)
+++ python/branches/py3k-cdecimal/Modules/cdecimal/context.c	Sat Jun  5 09:51:13 2010
@@ -19,7 +19,7 @@
 void (* mpd_traphandler)(mpd_context_t *) = mpd_dflt_traphandler;
 
 
-static void
+void
 mpd_setminalloc(mpd_ssize_t n)
 {
 	static int minalloc_is_set = 0;
@@ -97,20 +97,25 @@
 	ctx->allcr=1;
 }
 
-void
-mpd_extcontext(mpd_context_t *ctx)
+int
+mpd_ieee_context(mpd_context_t *ctx, int bits)
 {
-	ctx->prec=9;
-	ctx->emax=MPD_MAX_EMAX;
-	ctx->emin=MPD_MIN_EMIN;
+	if (bits <= 0 || bits > MPD_IEEE_CONTEXT_MAX_BITS || bits % 32) {
+		return -1;
+	}
+
+	ctx->prec = 9 * (bits/32) - 2;
+	ctx->emax = 3 * ((mpd_ssize_t)1<<(bits/16+3));
+	ctx->emin = 1 - ctx->emax;
 	ctx->round=MPD_ROUND_HALF_EVEN;
 	ctx->traps=0;
 	ctx->status=0;
 	ctx->newtrap=0;
-	ctx->clamp=0;
+	ctx->clamp=1;
 	ctx->allcr=1;
-}
 
+	return 0;
+}
 
 mpd_ssize_t
 mpd_getprec(const mpd_context_t *ctx)


More information about the Python-checkins mailing list