* 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; |   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 |           $flnegative? flpositive? flabs fixnum->flonum | ||||||
|           flsin flcos fltan flasin flacos flatan fleven? flodd? |           flsin flcos fltan flasin flacos flatan fleven? flodd? | ||||||
|           flfloor flceiling flnumerator fldenominator flexp fllog |           flfloor flceiling flnumerator fldenominator flexp fllog | ||||||
|           flinteger? flonum-bytes flnan? flfinite? flinfinite?) |           flinteger? flonum-bytes flnan? flfinite? flinfinite? | ||||||
|  |           flexpt) | ||||||
|   (import  |   (import  | ||||||
|     (ikarus system $bytevectors) |     (ikarus system $bytevectors) | ||||||
|     (ikarus system $fx)  |     (ikarus system $fx)  | ||||||
|  | @ -22,7 +23,8 @@ | ||||||
|     (except (ikarus) inexact->exact exact flpositive? flabs fixnum->flonum |     (except (ikarus) inexact->exact exact flpositive? flabs fixnum->flonum | ||||||
|             flsin flcos fltan flasin flacos flatan fleven? flodd? |             flsin flcos fltan flasin flacos flatan fleven? flodd? | ||||||
|             flfloor flceiling flnumerator fldenominator flexp fllog |             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) |   (define (flonum-bytes f) | ||||||
|     (unless (flonum? f)  |     (unless (flonum? f)  | ||||||
|  | @ -286,6 +288,19 @@ | ||||||
|             (error 'fllog "argument ~s should not be negative" x)) |             (error 'fllog "argument ~s should not be negative" x)) | ||||||
|         (error 'fllog "~s is not a flonum" 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] |     [add1                    i] | ||||||
|     [sub1                    i] |     [sub1                    i] | ||||||
|     [expt                    i r] |     [expt                    i r] | ||||||
|  |     [flexpt                  i] | ||||||
|     [sin                     i r] |     [sin                     i r] | ||||||
|     [cos                     i r] |     [cos                     i r] | ||||||
|     [tan                     i r] |     [tan                     i r] | ||||||
|  |  | ||||||
|  | @ -321,7 +321,7 @@ | ||||||
|     [fldiv0-and-mod0                            D fl] |     [fldiv0-and-mod0                            D fl] | ||||||
|     [fleven?                                    C fl] |     [fleven?                                    C fl] | ||||||
|     [flexp                                      C fl] |     [flexp                                      C fl] | ||||||
|     [flexpt                                     S fl] |     [flexpt                                     C fl] | ||||||
|     [flfinite?                                  C fl] |     [flfinite?                                  C fl] | ||||||
|     [flfloor                                    C fl] |     [flfloor                                    C fl] | ||||||
|     [flinfinite?                                C fl] |     [flinfinite?                                C fl] | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Abdulaziz Ghuloum
						Abdulaziz Ghuloum