* Added flexpt
This commit is contained in:
		
							parent
							
								
									69d692417f
								
							
						
					
					
						commit
						888833f686
					
				
							
								
								
									
										
											BIN
										
									
								
								bin/ikarus
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/ikarus
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -17,6 +17,13 @@ ikrt_fl_exp(ikp x, ikp y){ | |||
|   return y; | ||||
| } | ||||
| 
 | ||||
| ikp | ||||
| ikrt_flfl_expt(ikp a, ikp b, ikp z){ | ||||
|   flonum_data(z) = exp(flonum_data(b) * log(flonum_data(a))); | ||||
|   return z; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										
											BIN
										
									
								
								src/ikarus.boot
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								src/ikarus.boot
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -11,7 +11,8 @@ | |||
|           $flnegative? flpositive? flabs fixnum->flonum | ||||
|           flsin flcos fltan flasin flacos flatan fleven? flodd? | ||||
|           flfloor flceiling flnumerator fldenominator flexp fllog | ||||
|           flinteger? flonum-bytes flnan? flfinite? flinfinite?) | ||||
|           flinteger? flonum-bytes flnan? flfinite? flinfinite? | ||||
|           flexpt) | ||||
|   (import  | ||||
|     (ikarus system $bytevectors) | ||||
|     (ikarus system $fx)  | ||||
|  | @ -22,7 +23,8 @@ | |||
|     (except (ikarus) inexact->exact exact flpositive? flabs fixnum->flonum | ||||
|             flsin flcos fltan flasin flacos flatan fleven? flodd? | ||||
|             flfloor flceiling flnumerator fldenominator flexp fllog | ||||
|             flinteger? flonum-parts flonum-bytes flnan? flfinite? flinfinite?)) | ||||
|             flexpt flinteger? flonum-parts flonum-bytes flnan? flfinite? | ||||
|             flinfinite?)) | ||||
|    | ||||
|   (define (flonum-bytes f) | ||||
|     (unless (flonum? f)  | ||||
|  | @ -286,6 +288,19 @@ | |||
|             (error 'fllog "argument ~s should not be negative" x)) | ||||
|         (error 'fllog "~s is not a flonum" x))) | ||||
| 
 | ||||
|   (define (flexpt x y) | ||||
|     (if (flonum? x) | ||||
|         (if (flonum? y) | ||||
|             (let ([y^ ($flonum->exact y)]) | ||||
|               (cond | ||||
|                 [(fixnum? y^) (inexact (expt x y^))] | ||||
|                 [(bignum? y^) (inexact (expt x y^))] | ||||
|                 [else | ||||
|                  (foreign-call "ikrt_flfl_expt" x y ($make-flonum))])) | ||||
|             (error 'flexpt "~s is not a flonum" y)) | ||||
|         (error 'fllog "~s is not a flonum" x))) | ||||
| 
 | ||||
| 
 | ||||
|   ) | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -498,6 +498,7 @@ | |||
|     [add1                    i] | ||||
|     [sub1                    i] | ||||
|     [expt                    i r] | ||||
|     [flexpt                  i] | ||||
|     [sin                     i r] | ||||
|     [cos                     i r] | ||||
|     [tan                     i r] | ||||
|  |  | |||
|  | @ -321,7 +321,7 @@ | |||
|     [fldiv0-and-mod0                            D fl] | ||||
|     [fleven?                                    C fl] | ||||
|     [flexp                                      C fl] | ||||
|     [flexpt                                     S fl] | ||||
|     [flexpt                                     C fl] | ||||
|     [flfinite?                                  C fl] | ||||
|     [flfloor                                    C fl] | ||||
|     [flinfinite?                                C fl] | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Abdulaziz Ghuloum
						Abdulaziz Ghuloum