emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Rüdiger Sonderfeld" <ruediger@c-plusplus.de>
To: emacs-orgmode@gnu.org, Miguel Ruiz <rbenit68@yahoo.es>
Subject: Re: Bug: Babel calc sqrt float var
Date: Tue, 10 Dec 2013 13:38:24 +0100	[thread overview]
Message-ID: <4230137.vUWmcjrSE4@descartes> (raw)
In-Reply-To: <1386672182.64210.YahooMailNeo@web171906.mail.ir2.yahoo.com>

Hi,
the problem is that calc does not operate on regular elisp types but instead 
uses a different format:  (float NUM EXP) for decimal floats.  But ob-calc.el 
seems to simply push any value it gets on the stack and assigns it to a 
variable.  And since calc treats anything which isn't in such a lisp form as 
an integer it tries to call idiv.

To fix this the value should be converted to calc format before `calc-push-
list' is called.  But after a quick look into calc.el I couldn't find any 
generic function to convert elisp values to calc values.  The function `math-
read-number' seems to be the only way and it requires a string.  However my 
knowledge of calc internals is rather limited.

Regards,
Rüdiger

On Tuesday 10 December 2013 10:43:02 Miguel Ruiz wrote:
> Hi,
> 
> Please, I am communicating the following problematic behaviour:
> 
> #------------------- problematic code ------------------------
> #+begin_src calc 
> 
> sqrt(0.8)
> #+end_src
> 
> #+RESULTS:
> : 0.894427191 # OK
> 
> #+begin_src calc :var x=0.8
> sqrt(x)
> #+end_src
> 
> #+RESULTS:
> =Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p
> 0.80000000000000004) math-idivmod(0.80000000000000004 0.80000000000000004)
>   math-div(0.80000000000000004 0.80000000000000004)
>   math-cancel-common-factor(0.80000000000000004 0.80000000000000004)
>   math-simplify-sqrt()
>   #[(math-simplify-expr) "\300 \207" [math-simplify-sqrt] 1]((calcFunc-sqrt
> 0.80000000000000004)) math-simplify-step((calcFunc-sqrt
> 0.80000000000000004))
>   math-simplify((calcFunc-sqrt 0.80000000000000004))
>   calc-normalize-fancy((calcFunc-sqrt 0.80000000000000004))
>   calc-normalize((calcFunc-sqrt 0.80000000000000004))
>   math-evaluate-expr((calcFunc-sqrt 0.80000000000000004))
>   #[(line) "
>                   not copy-yank-able string
>                                                         "
> [line var-names calc-mode-map res x 0 calc-recall intern 1 "'" lookup-key
> nil calc-push-list calc-eval math-read-number error "Calc error \"%s\" on
> input \"%s\"" replace-regexp-in-string "" math-evaluate-expr mapcar
> org-babel-calc-maybe-resolve-var math-read-exprs] 11] ("sqrt(x)"))
> org-babel-execute:calc("sqrt(x)" ((:comments . "") (:shebang . "") (:cache
> . "no") (:padline . "") (:noweb . "no") (:tangle . "no") (:exports .
> "code") (:results . "replace") (:var x . 0.80000000000000004) (:session .
> "none") (:hlines . "no") (:result-type . value) (:result-params "replace")
> (:rowname-names) (:colname-names))) org-babel-execute-src-block(nil)
>   org-babel-execute-src-block-maybe()
>   org-babel-execute-maybe()
>   org-babel-execute-safely-maybe()
>   run-hook-with-args-until-success(org-babel-execute-safely-maybe)
>   org-ctrl-c-ctrl-c(nil)
>   call-interactively(org-ctrl-c-ctrl-c nil nil)
> 
> 
> #---------------------- end of problematic code
> --------------------------------
> 
> Command line: emacs -Q -l minimal-org.el
> 
> ;;; minimal-org.el:
> ;;; Minimal setup to load latest `org-mode'
>      
> ;; activate debugging
> (setq debug-on-error t
>       debug-on-signal nil
>       debug-on-quit nil)
>      
> ;; add latest org-mode to load path
> (add-to-list 'load-path (expand-file-name "~/org-mode/maint/lisp"))
> (add-to-list 'load-path (expand-file-name "~/org-mode/maint/contrib/lisp"
> t))
> 
> ;; active Babel languages
> (org-babel-do-load-languages
>  'org-babel-load-languages
>  '((calc . t)))
> 
> ;;; end of minimal-org.el
> 
> GNU Emacs 24.3.1 (i686-pc-cygwin) of 2013-08-14 on moufang
> 
> Org-mode version 8.2.4 (release_8.2.4-3-g7fe99a @
> /home/usuario/org-mode/maint/lisp/)
> 
> 
> TIA.
> Miguel Ruiz.

  reply	other threads:[~2013-12-10 12:38 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-10 10:43 Bug: Babel calc sqrt float var Miguel Ruiz
2013-12-10 12:38 ` Rüdiger Sonderfeld [this message]
2013-12-10 13:13 ` Eric S Fraga

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4230137.vUWmcjrSE4@descartes \
    --to=ruediger@c-plusplus.de \
    --cc=emacs-orgmode@gnu.org \
    --cc=rbenit68@yahoo.es \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).