LaTeX forum ⇒ Math & Sciencenumerical conditions Topic is solved

Information and discussion about LaTeX's math and science related features (e.g. formulas, graphs).
Posts: 42
Joined: Thu Oct 20, 2016 3:41 pm

numerical conditions

Postby kent » Sat Sep 09, 2017 2:06 pm

I often should have liked to be able to test for numerical conditions in my PGF macros.
Let me illustrate with one simple example:
Let A and B be two given poinst where we have access to their coordinates, say A = (\xA,\yA) and B = (\xB,\yB).
I would then like to be able to check if A = B within some tolerance.
But how should I test to see, say, for \dx = \xB-\xA that abs(\dx) < \eps for a small defined value of \eps (i.e 0.0005)?
As far as I know the Latex \ifthenelse cannot be used.
Kent Holing, NORWAY

Posts: 206
Joined: Thu Dec 04, 2008 4:39 am

Postby mas » Sun Sep 10, 2017 3:41 am

Looking at the pgf manual, Section 90, you can see that there is a pgfmath library which has commands to do what you need. I am just pasting below from the manual (page 939):
Comparison and logical functions
In addition to the commands described in Section 89.3.5, the following command was provided by Christian
Defines \pgfmathresult 1.0 if |<x>−<y>|< 0.0001, but 0.0 otherwise. As a side-effect, the global boolean
\ifpgfmathcomparison will be set accordingly.

OS: Debian/GNU Linux; LaTeX System : TeXLive; Editor : Vim

Posts: 42
Joined: Thu Oct 20, 2016 3:41 pm

Postby kent » Tue Sep 12, 2017 2:33 pm

Thanks, I see I need to upgrade the PGF version I am using or could anybody supply the code needed/mentioned?

User avatar
Stefan Kottwitz
Site Admin
Posts: 8708
Joined: Mon Mar 10, 2008 9:44 pm
Location: Hamburg, Germany

Postby Stefan Kottwitz » Tue Sep 12, 2017 11:20 pm

Hi Kent!

It's probably good to update in any case. I remember you worked on an intersection topic, that also was solvable with PGF 3 aka TikZ 3. It provides a lot more features than PGF 2. Otherwise you may re-program already existing new features.

You may consider to update the whole TeX installation. LaTeX evolves, new features, packages, and bug fixes appear.

Site admin

Posts: 42
Joined: Thu Oct 20, 2016 3:41 pm

Postby kent » Mon Jan 22, 2018 3:19 pm

Since I recently got PGF 3.0 installed, I like to revisit the above.
What's wrong with the if statement below?
  1. \pgfmathapproxequalto{0.15}{0.1499999999};
  2. \let\out\pgfmathresult;%here \out is 1.0 as it should
  3. \ifthenelse{\ifpgfmathcomparison}{true}{false};%here I thought I should get true
  4. % since I thought \ifpgfmathcomparison is true since \out is 1.0


Posts: 42
Joined: Thu Oct 20, 2016 3:41 pm

Postby kent » Tue Jan 23, 2018 1:46 pm

By using \let\outt\pgfmathint{\out} I transformed 1.0 to 1 and I could then use \ifthenelse{\outt>0} etc..
But, I still wonder how to use the boolean \ifpgfmathcomparison.

User avatar
Site Moderator
Posts: 1985
Joined: Sat Apr 16, 2011 7:27 pm
Location: Germany

Postby cgnieder » Fri Jan 26, 2018 5:31 pm

\ifpgfmathcomparison can be checked like any boolean defined with \newif:

  1. \documentclass{article}
  3. \usepackage{tikz,etoolbox,ifthen}
  5. \begin{document}
  7. \pgfmathapproxequalto{0.15}{0.1499999999}
  9. % standard TeX:
  10. \ifpgfmathcomparison
  11. true%
  12. \else
  13. false%
  14. \fi
  16. % etoolbox:
  17. \ifbool{pgfmathcomparison}{true}{false}
  19. % ifthen:
  20. \ifthenelse{\boolean{pgfmathcomparison}}{true}{false}
  22. \end{document}
chemmacros · chemformula · leadsheets · xsim

Return to “Math & Science”

Who is online

Users browsing this forum: No registered users and 2 guests