mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* ext/tk/lib/tk.rb (TkCore::chooseDirectory): back up wrongly
removed method. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4175 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									472efdfeb4
								
							
						
					
					
						commit
						f0b77b0cde
					
				
					 5 changed files with 124 additions and 88 deletions
				
			
		| 
						 | 
				
			
			@ -7,6 +7,11 @@ Sat Jul 26 21:25:21 2003  NAKAMURA Usaku <usa@ruby-lang.org>
 | 
			
		|||
 | 
			
		||||
	* win32/win32.c: remove some old comments.
 | 
			
		||||
 | 
			
		||||
Sat Jul 26 14:26:57 2003  Yukihiro Matsumoto  <matz@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* ext/tk/lib/tk.rb (TkCore::chooseDirectory): back up wrongly
 | 
			
		||||
	  removed method.
 | 
			
		||||
 | 
			
		||||
Sat Jul 26 14:14:12 2003  Nobuyoshi Nakada  <nobu.nokada@softhome.net>
 | 
			
		||||
 | 
			
		||||
	* ext/stringio/stringio.c: includes Enumerable as well as IO.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -750,7 +750,7 @@ if test "$with_dln_a_out" != yes; then
 | 
			
		|||
    esac
 | 
			
		||||
  else
 | 
			
		||||
    case "$target_os" in
 | 
			
		||||
	hpux*)		CCDLFLAGS='+z';;
 | 
			
		||||
	hpux*)		CCDLFLAGS='+Z';;
 | 
			
		||||
	solaris*|irix*)	CCDLFLAGS='-KPIC' ;;
 | 
			
		||||
	sunos*)		CCDLFLAGS='-PIC' ;;
 | 
			
		||||
	esix*|uxpds*)   CCDLFLAGS='-KPIC' ;;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -67,7 +67,7 @@ typedef uint8_t  sha2_byte;	/* Exactly 1 byte */
 | 
			
		|||
typedef uint32_t sha2_word32;	/* Exactly 4 bytes */
 | 
			
		||||
typedef uint64_t sha2_word64;	/* Exactly 8 bytes */
 | 
			
		||||
 | 
			
		||||
#if defined(__GNUC__)
 | 
			
		||||
#if defined(__GNUC__) || defined(_HPUX_SOURCE)
 | 
			
		||||
#define ULL(number)	number##ULL
 | 
			
		||||
#else
 | 
			
		||||
#define ULL(number)	(uint64_t)(number)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,15 +3,16 @@
 | 
			
		|||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#ifdef HAVE_UNISTD_H
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include <readline/readline.h>
 | 
			
		||||
#include <readline/history.h>
 | 
			
		||||
 | 
			
		||||
#include "ruby.h"
 | 
			
		||||
#include "rubysig.h"
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_UNISTD_H
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static VALUE mReadline;
 | 
			
		||||
 | 
			
		||||
#define TOLOWER(c) (isupper(c) ? tolower(c) : c)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										186
									
								
								lib/complex.rb
									
										
									
									
									
								
							
							
						
						
									
										186
									
								
								lib/complex.rb
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -21,7 +21,8 @@
 | 
			
		|||
#
 | 
			
		||||
# The following +Math+ module methods are redefined to handle Complex arguments.
 | 
			
		||||
# They will work as normal with non-Complex arguments.
 | 
			
		||||
#    sqrt exp cos sin tan log log10 atan2
 | 
			
		||||
#    sqrt exp cos sin tan log log10
 | 
			
		||||
#    cosh sinh tanh acos asin atan atan2 acosh asinh atanh
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +67,6 @@ class Complex < Numeric
 | 
			
		|||
    Complex(r*Math.cos(theta), r*Math.sin(theta))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private_class_method :new
 | 
			
		||||
  #
 | 
			
		||||
  # Creates a +Complex+ number <tt>a</tt>+<tt>b</tt><i>i</i>.
 | 
			
		||||
  #
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +76,9 @@ class Complex < Numeric
 | 
			
		|||
 | 
			
		||||
  def initialize(a, b)
 | 
			
		||||
    raise "non numeric 1st arg `#{a.inspect}'" if !a.kind_of? Numeric
 | 
			
		||||
    raise "`#{a.inspect}' for 1st arg" if a.kind_of? Complex
 | 
			
		||||
    raise "non numeric 2nd arg `#{b.inspect}'" if !b.kind_of? Numeric
 | 
			
		||||
    raise "`#{b.inspect}' for 2nd arg" if b.kind_of? Complex
 | 
			
		||||
    @real = a
 | 
			
		||||
    @image = b
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			@ -181,7 +183,7 @@ class Complex < Numeric
 | 
			
		|||
      end
 | 
			
		||||
    elsif Complex.generic?(other)
 | 
			
		||||
      r, theta = polar
 | 
			
		||||
      Complex.polar(r.power!(other), theta * other)
 | 
			
		||||
      Complex.polar(r**other, theta*other)
 | 
			
		||||
    else
 | 
			
		||||
      x, y = other.coerce(self)
 | 
			
		||||
      x**y
 | 
			
		||||
| 
						 | 
				
			
			@ -236,8 +238,9 @@ class Complex < Numeric
 | 
			
		|||
  # Argument (angle from (1,0) on the complex plane).
 | 
			
		||||
  #
 | 
			
		||||
  def arg
 | 
			
		||||
    Math.atan2(@image.to_f, @real.to_f)
 | 
			
		||||
    Math.atan2!(@image, @real)
 | 
			
		||||
  end
 | 
			
		||||
  alias angle arg
 | 
			
		||||
  
 | 
			
		||||
  #
 | 
			
		||||
  # Returns the absolute value _and_ the argument.
 | 
			
		||||
| 
						 | 
				
			
			@ -252,6 +255,7 @@ class Complex < Numeric
 | 
			
		|||
  def conjugate
 | 
			
		||||
    Complex(@real, -@image)
 | 
			
		||||
  end
 | 
			
		||||
  alias conj conjugate
 | 
			
		||||
  
 | 
			
		||||
  #
 | 
			
		||||
  # Compares the absolute values of the two numbers.
 | 
			
		||||
| 
						 | 
				
			
			@ -395,6 +399,7 @@ class Numeric
 | 
			
		|||
      return Math::PI
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
  alias angle arg
 | 
			
		||||
  
 | 
			
		||||
  #
 | 
			
		||||
  # See Complex#polar.
 | 
			
		||||
| 
						 | 
				
			
			@ -409,46 +414,28 @@ class Numeric
 | 
			
		|||
  def conjugate
 | 
			
		||||
    self
 | 
			
		||||
  end
 | 
			
		||||
  alias conj conjugate
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Fixnum
 | 
			
		||||
  unless defined? 1.power!
 | 
			
		||||
    alias power! ** 
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Redefined to handle a Complex argument.
 | 
			
		||||
  def ** (other)
 | 
			
		||||
    if self < 0
 | 
			
		||||
      Complex.new!(self, 0) ** other
 | 
			
		||||
    else
 | 
			
		||||
      if defined? self.rpower
 | 
			
		||||
        self.rpower(other)
 | 
			
		||||
      else
 | 
			
		||||
	self.power!(other)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class Bignum
 | 
			
		||||
  alias power! **
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class Float
 | 
			
		||||
  alias power! **
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
module Math
 | 
			
		||||
  alias sqrt! sqrt
 | 
			
		||||
  alias exp! exp
 | 
			
		||||
  alias log! log
 | 
			
		||||
  alias log10! log10
 | 
			
		||||
  alias cos! cos
 | 
			
		||||
  alias sin! sin
 | 
			
		||||
  alias tan! tan
 | 
			
		||||
  alias log! log
 | 
			
		||||
  alias cosh! cosh
 | 
			
		||||
  alias sinh! sinh
 | 
			
		||||
  alias tanh! tanh
 | 
			
		||||
  alias acos! acos
 | 
			
		||||
  alias asin! asin
 | 
			
		||||
  alias atan! atan
 | 
			
		||||
  alias log10! log10
 | 
			
		||||
  alias atan2! atan2
 | 
			
		||||
  alias acosh! acosh
 | 
			
		||||
  alias asinh! asinh
 | 
			
		||||
  alias atanh! atanh  
 | 
			
		||||
 | 
			
		||||
  # Redefined to handle a Complex argument.
 | 
			
		||||
  def sqrt(z)
 | 
			
		||||
| 
						 | 
				
			
			@ -478,20 +465,6 @@ module Math
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  #
 | 
			
		||||
  # Hyperbolic cosine.
 | 
			
		||||
  #
 | 
			
		||||
  def cosh!(x)
 | 
			
		||||
    (exp!(x) + exp!(-x))/2.0
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  #
 | 
			
		||||
  # Hyperbolic sine.
 | 
			
		||||
  #
 | 
			
		||||
  def sinh!(x)
 | 
			
		||||
    (exp!(x) - exp!(-x))/2.0
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  # Redefined to handle a Complex argument.
 | 
			
		||||
  def cos(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
| 
						 | 
				
			
			@ -521,6 +494,30 @@ module Math
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def sinh(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
      sinh!(z)
 | 
			
		||||
    else
 | 
			
		||||
      Complex( sinh!(z.real)*cos!(z.image), cosh!(z.real)*sin!(z.image) )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def cosh(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
      cosh!(z)
 | 
			
		||||
    else
 | 
			
		||||
      Complex( cosh!(z.real)*cos!(z.image), sinh!(z.real)*sin!(z.image) )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def tanh(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
      tanh!(z)
 | 
			
		||||
    else
 | 
			
		||||
      sinh(z)/cosh(z)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  # Redefined to handle a Complex argument.
 | 
			
		||||
  def log(z)
 | 
			
		||||
    if Complex.generic?(z) and z >= 0
 | 
			
		||||
| 
						 | 
				
			
			@ -540,68 +537,101 @@ module Math
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # FIXME: I don't know what the point of this is.  If you give it Complex
 | 
			
		||||
  # arguments, it will fail.
 | 
			
		||||
  def atan2(x, y)
 | 
			
		||||
    if Complex.generic?(x) and Complex.generic?(y)
 | 
			
		||||
      atan2!(x, y)
 | 
			
		||||
  def acos(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
      acos!(z)
 | 
			
		||||
    else
 | 
			
		||||
      fail "Not yet implemented."
 | 
			
		||||
      -1.0.im * log( z + 1.0.im * sqrt(1.0-z*z) )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  #
 | 
			
		||||
  # Hyperbolic arctangent.
 | 
			
		||||
  #
 | 
			
		||||
  def atanh!(x)
 | 
			
		||||
    log((1.0 + x.to_f) / ( 1.0 - x.to_f)) / 2.0
 | 
			
		||||
  def asin(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
      asin!(z)
 | 
			
		||||
    else
 | 
			
		||||
      -1.0.im * log( 1.0.im * z + sqrt(1.0-z*z) )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Redefined to handle a Complex argument.
 | 
			
		||||
  def atan(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
      atan2!(z, 1)
 | 
			
		||||
    elsif z.image == 0
 | 
			
		||||
      atan2(z.real,1)
 | 
			
		||||
      atan!(z)
 | 
			
		||||
    else
 | 
			
		||||
      a = z.real
 | 
			
		||||
      b = z.image
 | 
			
		||||
      
 | 
			
		||||
      c = (a*a + b*b - 1.0)
 | 
			
		||||
      d = (a*a + b*b + 1.0)
 | 
			
		||||
 | 
			
		||||
      Complex(atan2!((c + sqrt(c*c + 4.0*a*a)), 2.0*a),
 | 
			
		||||
	      atanh!((-d + sqrt(d*d - 4.0*b*b))/(2.0*b)))
 | 
			
		||||
      1.0.im * log( (1.0.im+z) / (1.0.im-z) ) / 2.0
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def atan2(y,x)
 | 
			
		||||
    if Complex.generic?(y) and Complex.generic?(x)
 | 
			
		||||
      atan2!(y,x)
 | 
			
		||||
    else
 | 
			
		||||
      -1.0.im * log( (x+1.0.im*y) / sqrt(x*x+y*y) )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def acosh(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
      acosh!(z)
 | 
			
		||||
    else
 | 
			
		||||
      log( z + sqrt(z*z-1.0) )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def asinh(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
      asinh!(z)
 | 
			
		||||
    else
 | 
			
		||||
      log( z + sqrt(1.0+z*z) )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def atanh(z)
 | 
			
		||||
    if Complex.generic?(z)
 | 
			
		||||
      atanh!(z)
 | 
			
		||||
    else
 | 
			
		||||
      log( (1.0+z) / (1.0-z) ) / 2.0
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  module_function :sqrt
 | 
			
		||||
  module_function :sqrt!
 | 
			
		||||
  module_function :sqrt
 | 
			
		||||
  module_function :exp!
 | 
			
		||||
  module_function :exp
 | 
			
		||||
  module_function :log!
 | 
			
		||||
  module_function :log
 | 
			
		||||
  module_function :log10!
 | 
			
		||||
  module_function :log10
 | 
			
		||||
  module_function :cosh!
 | 
			
		||||
  module_function :cosh
 | 
			
		||||
  module_function :cos!
 | 
			
		||||
  module_function :cos
 | 
			
		||||
  module_function :sinh!
 | 
			
		||||
  module_function :sinh
 | 
			
		||||
  module_function :sin!
 | 
			
		||||
  module_function :sin
 | 
			
		||||
  module_function :tan!
 | 
			
		||||
  module_function :tan
 | 
			
		||||
  module_function :log!
 | 
			
		||||
  module_function :log
 | 
			
		||||
  module_function :log10!
 | 
			
		||||
  module_function :log
 | 
			
		||||
  module_function :tanh!
 | 
			
		||||
  module_function :tanh
 | 
			
		||||
  module_function :acos!
 | 
			
		||||
  module_function :acos
 | 
			
		||||
  module_function :asin!
 | 
			
		||||
  module_function :asin
 | 
			
		||||
  module_function :atan!
 | 
			
		||||
  module_function :atan
 | 
			
		||||
  module_function :atan2!
 | 
			
		||||
  module_function :atan2
 | 
			
		||||
#  module_function :atan!
 | 
			
		||||
  module_function :atan
 | 
			
		||||
  module_function :acosh!
 | 
			
		||||
  module_function :acosh
 | 
			
		||||
  module_function :asinh!
 | 
			
		||||
  module_function :asinh
 | 
			
		||||
  module_function :atanh!
 | 
			
		||||
  module_function :atanh
 | 
			
		||||
  
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# Documentation comments:
 | 
			
		||||
#  - source: original (researched from pickaxe)
 | 
			
		||||
#  - a couple of fixme's
 | 
			
		||||
#  - Math module methods sinh! etc. a bit fuzzy.  What exactly is the intention?
 | 
			
		||||
#  - RDoc output for Bignum etc. is a bit short, with nothing but an
 | 
			
		||||
#    (undocumented) alias.  No big deal.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue