mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			911 B
		
	
	
	
		
			Prolog
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			911 B
		
	
	
	
		
			Prolog
		
	
	
	
	
	
; docformat = 'rst'
 | 
						|
 | 
						|
;+
 | 
						|
; Truncate argument towards 0.0, i.e., takes the `FLOOR` of positive values
 | 
						|
; and the `CEIL` of negative values.
 | 
						|
;
 | 
						|
; :Examples:
 | 
						|
;   Try the main-level program at the end of this file. It does::
 | 
						|
;
 | 
						|
;      IDL> print, mg_trunc([1.2, -1.2, 0.0])
 | 
						|
;                 1          -1           0
 | 
						|
;      IDL> print, floor([1.2, -1.2, 0.0])
 | 
						|
;                 1          -2           0
 | 
						|
;      IDL> print, ceil([1.2, -1.2, 0.0])
 | 
						|
;                 2          -1           0
 | 
						|
;
 | 
						|
; :Returns:
 | 
						|
;    array of same type as argument
 | 
						|
;
 | 
						|
; :Params:
 | 
						|
;    x : in, required, type=float/double
 | 
						|
;       array containing values to truncate
 | 
						|
;-
 | 
						|
function mg_trunc, x
 | 
						|
  compile_opt strictarr
 | 
						|
  
 | 
						|
  result = ceil(x)
 | 
						|
  posInd = where(x gt 0, nposInd)
 | 
						|
  
 | 
						|
  if (nposInd gt 0L) then begin
 | 
						|
    result[posInd] = floor(x[posInd])
 | 
						|
  endif
 | 
						|
  
 | 
						|
  return, result
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
; main-level example program
 | 
						|
 | 
						|
print, mg_trunc([1.2, -1.2, 0.0])
 | 
						|
 | 
						|
end
 |