text:
#### Searches for Goldstone Bosons (${{\mathit X}^{0}}$ )

(Including Horizontal Bosons and Majorons.) Limits are for branching ratios.
VALUE CL% DOCUMENT ID TECN  COMMENT
• • We do not use the following data for averages, fits, limits, etc. • •
$<4.3 \times 10^{-6}$ 90 1
 2021 A
PIEN ${{\mathit \pi}}$ $\rightarrow$ ${{\mathit \mu}}{{\mathit \nu}}{{\mathit X}^{0}}$ , Majoron
$<5.2 \times 10^{-8}$ 90 2
 2021 A
PIEN ${{\mathit \pi}}$ $\rightarrow$ ${{\mathit e}}{{\mathit \nu}}{{\mathit X}^{0}}$ , Majoron
$<9 \times 10^{-6}$ 90 3
 2020
PIEN ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ , Familon
$<7 \times 10^{-12}$ 90 4
 2020
MEG ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ ( ${{\mathit X}^{0}}$ $\rightarrow$ ${{\mathit \gamma}}{{\mathit \gamma}}$ ), Familon
$<9 \times 10^{-6}$ 90 5
 2015
TWST ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ , Familon
6
 2013
COSM Majoron dark matter decay
7
 2007
RVUE Meson, ${{\mathit \ell}}$ decays to Majoron
8
 1998
THEO ${{\mathit H}^{0}}$ $\rightarrow$ ${{\mathit X}^{0}}{{\mathit X}^{0}}$ , ${{\mathit A}^{0}}$ $\rightarrow$ ${{\mathit X}^{0}}{{\mathit X}^{0}}{{\mathit X}^{0}}$ , Majoron
9
 1991
Electron quasi-magnetic interaction
$<0.033$ 95 10
 1990 E
ARG ${{\mathit \tau}}$ $\rightarrow$ ${{\mathit \mu}}{{\mathit X}^{0}}$ . Familon
$<0.018$ 95 10
 1990 E
ARG ${{\mathit \tau}}$ $\rightarrow$ ${{\mathit e}}{{\mathit X}^{0}}$ . Familon
$<6.4 \times 10^{-9}$ 90 11
 1990
B787 ${{\mathit K}^{+}}$ $\rightarrow$ ${{\mathit \pi}^{+}}{{\mathit X}^{0}}$ . Familon
$<1.4 \times 10^{-5}$ 90 12
 1988
CNTR ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ . Familon
$<1.1 \times 10^{-9}$ 90 13
 1988
CBOX ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit \gamma}}{{\mathit X}^{0}}$ . Familon
14
 1988
ASTR Sun, Majoron
15
 1988
ASTR Majoron, SN 1987A
$<5 \times 10^{-6}$ 90 16
 1988
CNTR ${{\mathit \pi}}$ $\rightarrow$ ${{\mathit e}}{{\mathit \nu}}{{\mathit X}^{0}}$ , Majoron
$<1.3 \times 10^{-9}$ 90 17
 1987
CNTR ${{\mathit \mu}}$ $\rightarrow$ ${{\mathit e}}{{\mathit \gamma}}{{\mathit X}^{0}}$ . Familon
$<3 \times 10^{-4}$ 90 18
 1986 B
RVUE ${{\mathit \mu}}$ $\rightarrow$ ${{\mathit e}}{{\mathit X}^{0}}$ . Familon
$<1 \times 10^{-10}$ 90 19
 1986
SPEC ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ . Familon
$<2.6 \times 10^{-6}$ 90 20
 1986
SPEC ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ . Familon
21
 1985
MRK3 ${{\mathit \tau}}$ $\rightarrow$ ${{\mathit \ell}}{{\mathit X}^{0}}$ . Familon
22
 1983
COSM ${{\mathit \nu}}$ (hvy) $\rightarrow$ ${{\mathit \nu}}$ (light) ${{\mathit X}^{0}}$
 1 AGUILAR-AREVALO 2021A quoted limit applies to ${\mathit m}_{{{\mathit X}^{0}}}$ = 33.9 MeV. Limits between $4.3 \times 10^{-6}$ and $7.5 \times 10^{-5}$ are obtained for 0 $<$ ${\mathit m}_{{{\mathit X}^{0}}}$ $<$ 33.9 MeV. The lifetime of ${{\mathit X}^{0}}$ is assumed to be long enough. See their Fig. 6 for mass-dependent limits.
 2 AGUILAR-AREVALO 2021A quoted limit applies to ${\mathit m}_{{{\mathit X}^{0}}}$ = 85 MeV. Limits between $5.2 \times 10^{-8}$ and $1.4 \times 10^{-6}$ are obtained for 0 $<$ ${\mathit m}_{{{\mathit X}^{0}}}$ $<$ 120 MeV, which improve the limits of PICCIOTTO 1988 by an order of magnitude. The lifetime of ${{\mathit X}^{0}}$ is assumed to be long enough. See their Fig. 4 for mass-dependent limits.
 3 AGUILAR-AREVALO 2020 obtained limits of order $10^{-5}$ for ${\mathit m}_{{{\mathit X}^{0}}}$ = $47.8 - 95.1$ MeV. The quoted limit applies to ${\mathit m}_{{{\mathit X}^{0}}}$ = 75 MeV. See their Fig. 1 for mass-dependent limits.
 4 BALDINI 2020 obtained limits for ${\mathit m}_{{{\mathit X}^{0}}}$ = $20 - 45$ MeV and $\tau _{{{\mathit X}^{0}} }$ $<$ 40 ps, and supersedes BOLTON 1988 for ${\mathit m}_{{{\mathit X}^{0}}}$ = $20 - 40$ MeV. See their Fig. 17 for mass-dependent limits.
 5 BAYES 2015 limits are the average over ${\mathit m}_{{{\mathit X}^{0}}}$ = $13 - 80$ MeV for the isotropic decay distribution of positrons. See their Fig. 4 and Table II for the mass-dependent limits as well as the dependence on the decay anisotropy. In particular, they find a limit $<$ $58 \times 10^{-6}$ at 90$\%$ CL for massless familons and for the same asymmetry as normal muon decay, a case not covered by JODIDIO 1986 .
 6 LATTANZI 2013 use WMAP 9 year data as well as X-ray and ${{\mathit \gamma}}$ -ray observations to derive limits on decaying majoron dark matter. A limit on the decay width $\Gamma\mathrm {( {{\mathit X}^{0}} \rightarrow {{\mathit \nu}} {{\overline{\mathit \nu}}} )}$ $<$ $6.4 \times 10^{-19}$ s${}^{-1}$ at 95$\%$ CL is found if majorons make up all of the dark matter.
 7 LESSA 2007 consider decays of the form Meson $\rightarrow$ ${{\mathit \ell}}{{\mathit \nu}}$ Majoron and ${{\mathit \ell}}$ $\rightarrow$ ${{\mathit \ell}^{\,'}}{{\mathit \nu}}{{\overline{\mathit \nu}}}$ Majoron and use existing data to derive limits on the neutrino-Majoron Yukawa couplings $\mathit g_{ {{\mathit \alpha}} {{\mathit \beta}} }$ (${{\mathit \alpha}}$ , ${{\mathit \beta}}$ ${{\mathit \mu}}$ ,${{\mathit \tau}}$ ). Their best limits are $\vert \mathit g_{ {{\mathit e}} {{\mathit \alpha}} }$ $\vert ^2<$ $5.5 \times 10^{-6}$, $\vert \mathit g_{ {{\mathit \mu}} {{\mathit \alpha}} }$ $\vert ^2<$ $4.5 \times 10^{-5}$, $\vert \mathit g_{ {{\mathit \tau}} {{\mathit \alpha}} }$ $\vert ^2<$ $0.055$ at CL = 90$\%$.
 8 DIAZ 1998 studied models of spontaneously broken lepton number with both singlet and triplet Higgses. They obtain limits on the parameter space from invisible decay ${{\mathit Z}}$ $\rightarrow$ ${{\mathit H}^{0}}{{\mathit A}^{0}}$ $\rightarrow$ ${{\mathit X}^{0}}{{\mathit X}^{0}}{{\mathit X}^{0}}{{\mathit X}^{0}}{{\mathit X}^{0}}$ and ${{\mathit e}^{+}}$ ${{\mathit e}^{-}}$ $\rightarrow$ ${{\mathit Z}}{{\mathit H}^{0}}$ with ${{\mathit H}^{0}}$ $\rightarrow$ ${{\mathit X}^{0}}{{\mathit X}^{0}}$ .
 9 BOBRAKOV 1991 searched for anomalous magnetic interactions between polarized electrons expected from the exchange of a massless pseudoscalar boson (arion). A limit $\mathit x{}^{2}_{{{\mathit e}} }$ $<$ $2 \times 10^{-4}$ (95$\%$CL) is found for the effective anomalous magneton parametrized as $\mathit x_{{{\mathit e}} }(\mathit G_{\mathit F}/8{{\mathit \pi}}$ $\sqrt {2 }){}^{1/2}$.
 10 ALBRECHT 1990E limits are for B( ${{\mathit \tau}}$ $\rightarrow$ ${{\mathit \ell}}{{\mathit X}^{0}}$ )/B( ${{\mathit \tau}}$ $\rightarrow$ ${{\mathit \ell}}{{\mathit \nu}}{{\overline{\mathit \nu}}}$ ). Valid for ${\mathit m}_{{{\mathit X}^{0}}}$ $<$ 100 MeV. The limits rise to $7.1\%$ (for ${{\mathit \mu}}$ ), $5.0\%$ (for ${{\mathit e}}$ ) for ${\mathit m}_{{{\mathit X}^{0}}}$ = 500 MeV.
 11 ATIYA 1990 limit is for ${\mathit m}_{{{\mathit X}^{0}}}$ = 0. The limit B $<$ $1 \times 10^{-8}$ holds for ${\mathit m}_{{{\mathit X}^{0}}}$ $<$ 95 MeV. For the reduction of the limit due to finite lifetime of ${{\mathit X}^{0}}$ , see their Fig.$~$3.
 12 BALKE 1988 limits are for B( ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ ). Valid for ${\mathit m}_{{{\mathit X}^{0}}}$ $<$ 80 MeV and ${\mathit \tau}_{{{\mathit X}^{0}}}$ $>$ $10^{-8}$ sec.
 13 BOLTON 1988 limit corresponds to $\mathit F$ $>$ $3.1 \times 10^{9}$ GeV, which does not depend on the chirality property of the coupling.
 14 CHANDA 1988 find ${{\mathit v}_{{T}}}$ $<$ 10 MeV for the weak-triplet Higgs vacuum expectation value in Gelmini-Roncadelli model, and ${{\mathit v}_{{S}}}$ $>$ $5.8 \times 10^{6}$ GeV in the singlet Majoron model.
 15 CHOI 1988 used the observed neutrino flux from the supernova SN$~$1987A to exclude the neutrino Majoron Yukawa coupling $\mathit h$ in the range $2 \times 10^{-5}$ $<$ $\mathit h$ $<$ $3 \times 10^{-4}$ for the interaction $\mathit L_{{\mathrm {int}}}$ = ${1\over 2}\mathit ih{{\overline{\mathit \psi}}}{}^{\mathit c}_{\nu }\gamma _{5}{{\mathit \psi}_{{\nu}}}$ $\phi _{{\mathrm {X}}}$. For several families of neutrinos, the limit applies for ($\Sigma \mathit h{}^{4}_{\mathit i}){}^{1/4}$.
 16 PICCIOTTO 1988 limit applies when ${\mathit m}_{{{\mathit X}^{0}}}$ $<$ 55 MeV and ${\mathit \tau}_{{{\mathit X}^{0}}}$ $>$ 2ns, and it decreases to $4 \times 10^{-7}$ at ${\mathit m}_{{{\mathit X}^{0}}}$ = 125 MeV, beyond which no limit is obtained.
 17 GOLDMAN 1987 limit corresponds to $\mathit F$ $>$ $2.9 \times 10^{9}$ GeV for the family symmetry breaking scale from the Lagrangian $\mathit L_{{\mathrm {int}}}$ = (1/$\mathit F){{\overline{\mathit \psi}}_{{\mu}}}{{\mathit \gamma}}{}^{{{\mathit \mu}} }$ ($\mathit a+\mathit b{{\mathit \gamma}_{{5}}}$ ) ${{\mathit \psi}_{{e}}}$ $\partial{}_{{{\mathit \mu}} }{{\mathit \phi}}$ $_{{{\mathit X}^{0}} }$ with $\mathit a{}^{2}+\mathit b{}^{2}$ = 1. This is not as sensitive as the limit $\mathit F$ $>9.9 \times 10^{9}$ GeV derived from the search for ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ by JODIDIO 1986 , but does not depend on the chirality property of the coupling.
 18 Limits are for $\Gamma\mathrm {( {{\mathit \mu}} \rightarrow {{\mathit e}} {{\mathit X}^{0}} )}/\Gamma\mathrm {( {{\mathit \mu}} \rightarrow {{\mathit e}} {{\mathit \nu}} {{\overline{\mathit \nu}}} )}$. Valid when ${\mathit m}_{{{\mathit X}^{0}}}$ = 0$-$93.4, 98.1$-$103.5 MeV.
 19 EICHLER 1986 looked for ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ followed by ${{\mathit X}^{0}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit e}^{-}}$ . Limits on the branching fraction depend on the mass and and lifetime of ${{\mathit X}^{0}}$ . The quoted limits are valid when ${\mathit \tau}_{{{\mathit X}^{0}}}{ {}\lesssim{} }3. \times 10^{-10}~$s if the decays are kinematically allowed.
 20 JODIDIO 1986 corresponds to $\mathit F$ $>9.9 \times 10^{9}$ GeV for the family symmetry breaking scale with the parity-conserving effective Lagrangian $\mathit L_{{\mathrm {int}}}$ = (1/$\mathit F$) ${{\overline{\mathit \psi}}_{{\mu}}}{{\mathit \gamma}}{}^{{{\mathit \mu}} }{{\mathit \psi}_{{e}}}$ $\partial{}{}^{{{\mathit \mu}} }\phi _{{{\mathit X}^{0}} }$.
 21 BALTRUSAITIS 1985 search for light Goldstone boson(${{\mathit X}^{0}}$ ) of broken U(1). CL = 95$\%$ limits are B( ${{\mathit \tau}}$ $\rightarrow$ ${{\mathit \mu}^{+}}{{\mathit X}^{0}}$ )$/$B( ${{\mathit \tau}}$ $\rightarrow$ ${{\mathit \mu}^{+}}{{\mathit \nu}}{{\mathit \nu}}$ ) $<$0.125 and B( ${{\mathit \tau}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}^{0}}$ )$/$B( ${{\mathit \tau}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit \nu}}{{\mathit \nu}}$ ) $<$0.04. Inferred limit for the symmetry breaking scale is $\mathit m$ $>$3000 TeV.
 22 The primordial heavy neutrino must decay into ${{\mathit \nu}}$ and familon, $\mathit f_{\mathit A}$, early so that the red-shifted decay products are below critical density, see their table. In addition, ${{\mathit K}}$ $\rightarrow$ ${{\mathit \pi}}$ $\mathit f_{\mathit A}$ and ${{\mathit \mu}}$ $\rightarrow$ ${{\mathit e}}$ $\mathit f_{\mathit A}$ are unseen. Combining these excludes ${\mathit m}_{\mathrm {heavy {{\mathit \nu}} }}$ between $5 \times 10^{-5}$ and $5 \times 10^{-4}$ MeV (${{\mathit \mu}}$ decay) and ${\mathit m}_{\mathrm {heavy {{\mathit \nu}} }}$ between $5 \times 10^{-5}$ and 0.1 MeV (${{\mathit K}}$ -decay).
References:
 AGUILAR-AREVALO 2021A
PR D103 052006 Search for three body pion decays ${\pi}^+{\to}l^+{\nu}X$
 AGUILAR-AREVALO 2020
PR D101 052014 Improved search for two body muon decay ${\mu}^+{\rightarrow}e^+X_H$
 BALDINI 2020
EPJ C80 858 Search for lepton flavour violating muon decay mediated by a new light particle in the MEG experiment
 BAYES 2015
PR D91 052020 Search for Two Body Muon Decay Signals
 LATTANZI 2013
PR D88 063528 Updated CMB, X- and Gamma-Ray Constraints on Majoron Dark Matter
 LESSA 2007
PR D75 094001 Revising Limits on Neutrino-Majoron Couplings
 DIAZ 1998
NP B527 44 Seesaw Majoron Model of Neutrino Mass and Novel Signals in Higgs Boson Production at LEP
 BOBRAKOV 1991
JETPL 53 294 An Experimental Limit on the Existence of the Electron Quasimagnetic (Arion) Interaction
 ALBRECHT 1990E
PL B246 278 Determination of the Michel Parameter in ${{\mathit \tau}}$ Decay
 ATIYA 1990
PRL 64 21 Search for the Decay ${{\mathit K}^{+}}$ $\rightarrow$ ${{\mathit \pi}^{+}}{{\mathit \nu}}{{\overline{\mathit \nu}}}$
 BALKE 1988
PR D37 587 Precise Measurement of the Asymmetry Parameter $\delta$ in Muon Decay
 BOLTON 1988
PR D38 2077 Search for Rare Muon Decays with the Crystal Box Detector
 Also
PRL 56 2461 Search for the Decay ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit \gamma}}$
 Also
PRL 57 3241 Search for the Rare Decay ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit \gamma}}{{\mathit \gamma}}$
 CHANDA 1988
PR D37 2714 Astrophysical Constraints on Axion and Majoron Couplings
 CHOI 1988
PR D37 3225 Constraints on the Majoron Interactions from the Supernova SN1987a
 PICCIOTTO 1988
PR D37 1131 Search for Majoron Production and Other Process Associated with ${{\mathit \pi}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit \nu}}$ Decay
 GOLDMAN 1987
PR D36 1543 Light Boson Emission in the Decay of ${{\mathit \mu}^{+}}$
 BRYMAN 1986B
PRL 57 2787 Exotic Muon Decay ${{\mathit \mu}^{+}}$ $\rightarrow$ ${{\mathit e}^{+}}{{\mathit X}}$
 EICHLER 1986
PL B175 101 Limits for Short Lived Neutral Particle Emitted in ${{\mathit \mu}^{+}}$ or ${{\mathit \pi}^{+}}$ Decay
 JODIDIO 1986
PR D34 1967 Search for Right Handed Currents in Muon Decay
 Also
PR D37 237 (erratum) Search for Right Handed Currents in Muon Decay
 BALTRUSAITIS 1985
PRL 55 1842 Tau Leptonic Branching Ratios and a Search for Goldstone Decay
 DICUS 1983
PR D28 1778 Upper Bound on the Decay Constant of Familons


text:
In this video, we will be learning how to determine percent change. After you finish this lesson, view all of our Pre-Algebra lessons and practice problems.

Percent Change Formula: $\dfrac{New Value - Original Value}{Original Value}\cdot100\%=Percent Change$

For example:

The price of gas was originally $5. The new price for gas is$4. What is the percent change?

$\dfrac{New Value - Original Value}{Original Value}\cdot100\%=Percent Change$

$\dfrac{(4) - (5)}{(5)}\cdot100\%=Percent Change\leftarrow$ Substitute the givens

$\dfrac{(4) - (5)}{(5)}\cdot100\%=Percent Change\leftarrow$ Simplify

$\dfrac{-1}{5}\cdot100\%=Percent Change$

$-20\%=Percent Change$

## Examples of Percent Change

### Example 1

The staff at a company went from 40 to 29 employees. What is the percent decrease in staff?

$\dfrac{New Value - Original Value}{Original Value}\cdot100\%=Percent Change$

First, substitute the given

$\dfrac{(29) - (40)}{(40)}\cdot100\%=Percent Change$

Then, simplify

$\dfrac{-11}{40}\cdot100\%=Percent Change$

$-27.5\%=Percent Change$

### Example 2

Jessica works in a candystore for $8.00 per hour. If her pay is increased to$14.00, then what is her percent increase in pay?

$\dfrac{New Value - Original Value}{Original Value}\cdot100\%=Percent Change$

First, substitute the given

$\dfrac{(14) - (8)}{(8)}\cdot100\%=Percent Change$

Then, simplify

$\dfrac{6}{8}\cdot100\%=Percent Change$

$75\%=Percent Change$

## Video-Lesson Transcript

In this video, we will be learning how to determine percent change.

Let’s go through percent increase and percent decrease.

We will use just one formula to compute the percent change:

$\dfrac{New Value - Original Value}{Original Value} \times 100\%$

For example:

The price of gas was originally $\5$. The price went down to $\4$. What is the percent change?

Let’s use the formula.

$\dfrac{4 - 5}{5} \times 100\%$

Which will be $\dfrac{(- 1)}{5} \times 100\%$

Then divide $(- 1)$ by $5$ the answer is $(- 0.20)$

$(- 0.20) \times 100\% = (-20\%)$

We have a $20\%$ decrease.

Let’s have another one.

The price of gas was originally $\4$. The price went down to $\5$. What is the percent change?

Let’s use the formula and substitute all the given values.

$\dfrac{5 - 4}{4} \times 100\%$ $\dfrac{1}{4} \times 100\%$ $0.25 \times 100\%$

We’ll get $25\%$

Since the answer is positive, it means it’s an increase.

Just a review, the percent change formula is

$\dfrac{New Value - Original Value}{Original Value} \times 100\%$

format: plain


text:
main-content

## Swipe om te navigeren naar een ander artikel

01-12-2018 | Research | Uitgave 1/2018 Open Access

# Sex-related differences in coordination and variability among foot joints during running

Tijdschrift:
Journal of Foot and Ankle Research > Uitgave 1/2018
Auteurs:
Tomoya Takabayashi, Mutsuaki Edama, Takuma Inai, Masayoshi Kubo
Belangrijke opmerkingen

## Electronic supplementary material

The online version of this article (https://doi.org/10.1186/s13047-018-0295-9) contains supplementary material, which is available to authorized users.
Abbreviations
ES
Effect size
FF-MF
Forefoot with respect to the midfoot
MF-RF
Midfoot with respect to the rearfoot
RF-SH
Rearfoot with respect to the shank
SD
Standard deviation

## Background

The increased awareness of exercise as a necessity for maintaining a healthy lifestyle has made running more popular than ever. While there are many beneficial effects of running, the incidence of running injuries is alarmingly high. One study [ 1] has suggested that 19.4–79.3% of runners are injured each year. Previous studies [ 2, 3] have reported a difference in the incidence of ankle/foot injuries between men and women. Frisch et al. [ 2] investigated the incidence of sports-related injuries in young athletes and found that ankle/foot injuries were the most common in men and women. Furthermore, women had a significantly higher proportion of injuries in the ankle/foot area than men (34.8% and 16.8%, respectively). In particular, overuse injuries of the foot are common among both elite and recreational runners [ 4]. Among overuse injuries of the foot, plantar fasciitis, which is a common foot injury in runners, was reported in previous study [ 5] to have an increased prevalence in women. Other researchers [ 6] have also reported that the incidence of metatarsal stress fractures in women is more than 3.5 times that of men.
Many previous studies [ 710] have investigated traditional kinematic parameters such as range of motion and peak value during dynamic tasks using single joint analysis to identify the reason for the difference between the sexes with respect to the incidence of running injuries. For example, Takabayashi et al. [ 7] found that women had a greater range of motion and peak values in rearfoot and midfoot motions during running compared to men and reported that this result may provide the reason for the high incidence of foot injuries in women. While potential changes of information on the running injury mechanism have been demonstrated, the motor control mechanism behind these changes is not clear [ 11]. Additionally, abnormal motion in one joint may influence the kinematics in other joints. However, traditional kinematic parameters cannot simultaneously detect two-joint coordinated relationships.
Other researchers have investigated joint or segment coordination based on vector coding technique, which is a dynamic system approaches and reported that coordination information allows a more sensitive measure of joint mechanism [ 12]. Altered joint or segment coordination results from a change in either the relative timing or amplitude of motion, and this has been suggested to be a cause of running injuries [ 13]. For example, compared with healthy runners, injured runners demonstrate altered coordination between the thigh and shank [ 12]. Moreover, coordination between the shank and rearfoot differs between men and women runners [ 14]. Taking this into consideration, coordination among the foot joints may be altered between men and women during running, since the incidence of ankle/foot injuries between men and women is different. However, the influence of sex-related differences on coordination among the foot joints remains unclear.
Moreover, variability of coordination has been suggested to be a critical index for defining both the state of injury and the potential risk of injury [ 15]. In healthy able-bodied individuals, there are many available individual degrees of freedom that can be combined or coordinated to achieve a movement task. Hence, low variability means less flexibility of the body to adapt to changing situations, which may lead to greater repetitive stresses on the lower extremity joints [ 16]. As the frequently used dynamic system approach for quantifying coordination variability, there is a continuous relative phase in addition to vector coding technique. While the continuous relative phase provides spatio-temporal information from the position and velocity signals, this technique has limitations in quantifying non-sinusoidal couplings and may be not appropriate for most lower extremity couplings during the gait [ 17]. Thus, quantifying coordination variability is often performed using the vector coding technique in many studies, for example runners with patellofemoral syndrome exhibit less coordination variability than healthy runners by vector coding technique [ 18]. Moreover, women have decreased variability of coordination at the intra-lower extremity (e.g. between thigh and shank) compared to men [ 19]. While most of the previous studies have focused on variability of coordination in the intra-lower extremity, it is unknown if or how foot joint coordination variability changes in men and women. By conducting this study, we hope to gain a greater understanding of the underlying mechanism contributing to differences of injury risk in men and women.
The purpose of this study was to investigate sex-related differences in coordination and variability among the foot joints during running. Owing to increased foot injury rates in women [ 2, 3], we hypothesized that there would be a difference in coordination between men and women, and that its variability would be decreased in women compared to men.

## Methods

### Participants

Twelve healthy men (age = 20.7 (1.2) years; height = 1.71 (0.05) m; weight = 64.8 (9.0) kg) and twelve women (age = 20.4 (1.0) years; height = 1.60 (0.06) m; weight = 52.8 (8.5) kg) participated in this study. Inclusion criteria were as follows: no history of or currently present with lower limb injuries and normal foot based on the arch height index during 90% weight bearing. The reference value for the normal foot is considered to be 1.5 standard deviation (SD) above or below the mean arch ratio measurement of 0.292 (SD 0.027), based on a previously examined sample population of 102 ft [ 20]. In this study, all participants provided written informed consent before participation. This study was approved by the ethics committee of our institution (No. 17724–160902).

### Experimental protocol

Reflective markers of 9 mm in diameter were fixed to the right shank and foot at the tibial tuberosity, fibula head, medial malleolus, lateral malleolus, Achilles tendon attachment, sustentaculum tali, peroneal tubercle, navicular bone, cuboid, first metatarsal base, first metatarsal head, second metatarsal base, second metatarsal head, fifth metatarsal head, and head of the proximal phalanx of the hallux (Fig.  1), according to the Rizzoli foot model [ 21]. The reproducibility of this model has been confirmed in a previous study [ 22]. The marker was also attached at the right posterior superior iliac spine to determine the stance phase.
Prior to the acquisition of running data, static standing data were measured for each participant. These data were used to calculate the offset values for all joint rotations in each participant [ 21]. After the measurement, the participants performed barefoot running (individual’s jogging speed and preferred cadence) on a treadmill (Auto Runner AR-100: Minato Medical Science, Japan). Since women are generally smaller in body size as compared to men, women are likely to increase their step length and cadence parameters. Hence, all spatiotemporal parameters were normalized by the following: speed normalized by the square root of the acceleration of gravity × leg length; cadence normalized by the square root of the leg length/acceleration of gravity; and step length normalized by leg length [ 23]. Such analysis is often used to investigate sex differences in lower extremity kinematics in previous studies [ 7, 24].
The participants were allowed to practice the tasks repeatedly for more than one minute on the treadmill. The examiner confirmed with the participants through questioning whether they were accustomed to the motion. After all the subjects verbally reported feeling comfortable running on the treadmill, the task was measured for 30 s. From the strides measured in 30 s, five strides were randomly extracted for each participant. The examiner confirmed the question that all participants had no fatigue prior to measurement of the task or ending the task. The static data and task were measured using a three-dimensional motion analysis system (Vicon, Oxford, United Kingdom) that included 13 infrared cameras at a sampling rate of 250 Hz.

### Data analysis

Raw marker trajectory data during running were filtered using a second-order, zero-lag Butterworth low-pass filter with a 12-Hz cut-off frequency [ 9]. The following four segments were defined in the kinematics model: the shank comprising the tibia and fibula; the rearfoot (i.e., calcaneus); the midfoot comprising the navicular, cuneiform, and cuboid bones; and the forefoot comprising the first to fifth metatarsal bones. In this study, the three-dimensional joint angles were calculated at the distal segment and expressed relative to the adjacent proximal segment using a right-handed orthogonal Cardan Xyz sequence of rotations (a sequence of plantarflexion/dorsiflexion, eversion/inversion, and abduction/adduction) [ 25], which was selected to be equivalent of the joint coordinate system [ 26]. Hence, the joint angles were calculated as plantarflexion/dorsiflexion, eversion/inversion, and abduction/adduction of the rearfoot with respect to the shank (RF-SH), midfoot with respect to the rearfoot (MF-RF), and forefoot with respect to the midfoot (FF-MF).
After calculation of the joint angles during the task, the data were time-normalized to the stance phase (100 data points). The stance phase was determined from the marker trajectory data of the calcaneus, second metatarsal head, and posterior superior iliac spine using Smith’s custom designed algorithm [ 27]. Briefly, foot strike was defined to occur at the point of maximum in vertical displacement between the calcaneus and posterior superior iliac spine markers. Similarly, toe-off was defined to occur at the point of maximum in vertical displacement between the second metatarsal head and posterior superior iliac spine markers. This method can provide an accurate estimation of foot strike and toe-off. The foot strike angle [ 28] was also calculated because differences in foot strike angles affect intra-foot kinematics and coupling of the foot joints [ 29].

### Calculation of the coupling angle and variability

Inter-joint coordination was inferred from a coupling angle ( γ) (Fig.  2a). The coupling angle was calculated using the modified vector coding technique in this study [ 30].
$${\gamma}_{j,i}=\kern0.5em {\tan}^{-1}\left(\frac{y_{j,i+1}-{y}_{j,i}}{x_{j,i+1}-{x}_{j,i}}\right)$$
where 0 ° ≤  γ ≤  360 °, x i, and y i represent the proximal and distal joint angles, respectively. In addition, i represents the percent stance of the jth stride. To determine the coupling angle for a single participant (i.e., five strides) and among the participants, the mean coupling angle was calculated from the mean x i and the mean y i at each percentage of stance. The calculations were performed according to circular statistics [ 31]. Coordination variability was calculated as the circular SD of the coupling angle for each individual across five strides of data.
The foot joint couplings of interest included the following: (1) sagittal RF-SH vs. sagittal MF-RF, (2) frontal RF-SH vs. frontal MF-RF, (3) sagittal MF-RF vs. sagittal FF-MF, and (4) frontal MF-RF vs. frontal FF-MF. These pairs of joint rotations have been investigated in previous studies [ 32]. They were chosen to show stronger kinematic coupling during running [ 33]. The coupling angle represents an instantaneous spatial relationship from which four coordination patterns (Fig. 2b) can be identified: (i) in-phase with proximal dominancy (the same direction and greater angular amplitude of the proximal joint), (ii) in-phase with distal dominancy (the same direction and greater angular amplitude of the distal joint), (iii) anti-phase with proximal dominancy (the opposite direction and greater angular amplitude of the proximal joint), and (iv) anti-phase with distal dominancy (the opposite direction and greater angular amplitude of the distal joint) [ 34]. In the present study, the positive direction of joint rotation was defined as dorsiflexion and inversion.
There are two functional phases, absorption and propulsion, during the stance phase of running, and the two phases switch at the moment when rearfoot eversion changes to rearfoot inversion [ 13]. The two phases were divided based on the peak value of rearfoot eversion in each participant. The mean coupling angles were categorized into one of the four coordination patterns at each phase, as shown in Fig.  3. All computations were performed in Scilab version 6.0.0 (Enterprises, Versailles, France).

### Statistical analysis

An independent t-test was used to detect sex-related differences among normalized spatiotemporal parameters, foot strike angles, and foot joint coordination patterns in each functional phase. The alpha level for all tests was set at 0.05. Statistics testing was performed using R version 3.3.2 (The R Foundation for Statistical Computing, Austria). Effect sizes (ES) were also calculated by using Cohen’s d statistics. The ES were evaluated on the following criteria: trivial (0–0.19), small (0.20–0.49), medium (0.50–0.79), and large (> 0.80).

## Results

While speed (men: 2.17 (0.12) ms − 1, women: 2.04 (0.13) ms − 1) and step length (men: 0.78 (0.04) m, women: 0.71 (0.06) m) significantly differed between the men and women ( P < 0.05), there were no differences in the normalized speed (men: 0.75 (0.04), women: 0.73 (0.04), P > 0.05), normalized cadence (men: 49.1 (2.4), women: 49.3 (2.9), P > 0.05), normalized step length (men: 0.92 (0.05), women: 0.88 (0.07), P > 0.05), and foot strike angle (men: 16.8° (5.1°), women: 15.6° (3.2°), P > 0.05) between men and women.
In the sagittal plane, RF-SH vs. MF-RF couple, during the absorption phase, women showed a significant increase in the proportion of in-phase with distal dominancy (the same direction and greater angular amplitude of MF-RF) compared with men (men: 11% (6.1%), women; 25.4% (12.3%), Fig.  4a). During the absorption phase, in the sagittal MF-RF vs. FF-MF couple, men showed a significant increase in the proportion of anti-phase with distal dominancy (the opposite direction and greater angular amplitude of MF-RF) compared with men (men; 17.0% (7.4%), women; 9.1% (5.7%), Fig. 4b). In the sagittal MF-RF vs. FF-MF couple during the propulsion phase, women showed a significant increase in the proportion of in-phase with proximal dominancy (the same direction and greater angular amplitude of MF-RF) compared to men (men; 43.6% (21.6%), women; 60.6% (12.0%), Fig. 4b). In the frontal RF-SH vs. frontal MF-RF couple during the propulsion phase, women showed a significant increase in the proportion of anti-phase with proximal dominancy (the opposite direction and greater angular amplitude of RF-SH) compared to men (men; 7.2% (7.8%), women; 13.9% (7.5%), Fig. 4c). In the frontal MF-RF vs. frontal FF-MF couple during the absorption phase, women showed a significant increase in the proportion of anti-phase with proximal dominancy (the opposite direction and greater angular amplitude of MF-RF) compared to men (men; 18.6% (14.3%), women; 39.8% (24.1%), Fig. 4d). The ES of these significant parameters were all large.
Variabilities in coordination between the foot joints are shown in Fig. 5. Coordination variabilities for sagittal RF-SH vs. MF-RF, frontal RF-SH vs. MF-RF, sagittal MF-RF vs. FF-MF and frontal MF-RF vs. FF-MF were similar between men and women, and all coordination variabilities were not significantly different (Fig.  5a- d). Moreover, the ES of these parameters were trivial to small. Complete results of coordination and variability are displayed in the Additional file  1: Table S1.

## Discussion

The purpose of this study was to investigate sex-related differences in coordination and variability between the foot joints during running. The results of this study support our first hypothesis that foot joint coordination during running differed between men and women. Contrary to our second hypothesis that coordination variability between foot joints would be lower in women than in men, variabilities in joint coordination were similar between groups.
Some of the coordination patterns were significantly different between men and women (e.g. in-phase with distal dominancy in sagittal RF-SH vs. MF-RF couple). As a rationale for the difference in coordination patterns by sex, DeLeo et al. [ 13] reported that altered joint or segment coordination results from a change in either the relative timing or amplitude of motion. The coordination changes in this study could also be a result of alternating joint motion amplitudes, alternating joint motion timing, or a combination of both [ 11].
In many previous studies [ 1114, 35], altered joint coordination patterns have been suggested to be a cause or marker of running injury. Chang et al. [ 30] reported that anti-phase motion in the frontal plane leads to torsion of the soft tissues. It is thought that this motion may overload the soft tissues or joints. Actually, the coordination pattern between trunk and pelvis rotation in the transverse plane in patients with low back pain decreases in the anti-phase and increases in the in-phase compared to controls. This is because patients adjust to avoid or minimize pain [ 35, 36]. Additionally, sex-related differences in excessive motions of the lower extremities during running have been suggested to be a contributing factor for running injuries [ 7, 10, 37], for example women showed excessive midfoot movements in the sagittal plane compared to men [ 7]. The proportion of frontal RF-SH vs. MF-RF and MF-RF vs. FF-MF couples in women was significantly increased in the anti-phase with proximal dominancy. Therefore, the results of this analysis contribute to the factor that women are more likely to have ankle/foot injuries than men. However, this suggestion will require investigation in a longitudinal study.
In this study, all coordination variabilities were not significantly different. Boyer et al. [ 38] showed that coordination variability in transverse thigh and shank rotation was reduced in women compared to men during running, but those results were inconsistent with the results of this study. However, a previous study [ 16] reported that the coordination variabilities of the intra-lower extremity were similar between young people and healthy elderly people who have high injury rates. This is due to the fact that those elderly people were healthy, which potentially prevented the injury. Similarly, changes in coordination variability in men and women in this study may have not shown because the target participants were healthy and had no history of disability. Additionally, it was thought to be due to differences in spatiotemporal parameters. Previous studies [ 14, 39] set the same running speed between men and women. However, because women are generally smaller in body size than men, women are more likely to increase the step length and cadence parameters as compared to men, which may have affected the preferred movement patterns of women. Recent walking and running analysis study [ 7, 24] has addressed an analysis of sex-related difference by removing the influence of those spatiotemporal parameters. Since the influence of the spatiotemporal parameters was eliminated in this study, coordination variabilities were not significantly different between men and women. Further research into the influence of such factors on variability measures is warranted.
The present study has certain limitations. First, this study was performed with all participants running at a jogging speed because there is a possibility that pain will appear in the foot when barefoot fast running. However, as running kinematics may change when increasing the running speed, the results of this study could have been different under faster running conditions. Second, the present study includes the use of skin-mounted markers to track the underlying skeletal structures. While the Rizzoli foot model used in this study has been validated in an in vitro study [ 40], this model has not been validated in an in vivo study. Thus, skin markers mounted on externally identifiable bony landmarks in the foot may not follow the underlying individual skeletal segments to be properly evaluated during running. Finally, since this study used a foot model composed of the rearfoot, midfoot, and forefoot, the motion of each foot bone, such as the metatarsals, cannot be investigated. For example, while the forefoot segment in this study comprises the first to fifth metatarsal bones, previous researches on bone pins have reported that there is considerable movement in each metatarsal bone during running and walking [ 41]. These limitations will need to be addressed in future studies.

## Conclusions

In this study, coordination of variability of the foot joints during running was similar between men and women, but coordination of the foot joints during running differed between men and women. The results of this analysis may be useful for understanding the underlying mechanism contributing to differences in injury risk in men and women. Furthermore, these results provide novel data on foot joint coordination and variability that could be used as reference data for both biomechanical and clinical running studies.

## Acknowledgments

We thank the members of the Institute for Human Movement and Medical Science, Niigata University of Health and Welfare for their assistance, and Editage ( www.editage.jp) for English language editing.

### Funding

This study was supported by a Research Activity Start-up grant (16H07304) from the Japan Society for the Promotion of Science and Grant-in-Aid for Exploratory Research (H29B17) in our affiliation.

### Availability of data and materials

Data may be made available by the authors upon reasonable request.

### Ethics approval and consent to participate

All participants provided informed consent prior to participation. The present study was reviewed and approved by the ethical committee in our institution (No. 17724–160902).

Not applicable.

### Competing interests

The authors declare that they have no competing interests.

### Publisher’s Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

## Onze productaanbevelingen

### BSL Podotherapeut Totaal

Binnen de bundel kunt u gebruik maken van boeken, tijdschriften, e-learnings, web-tv's en uitlegvideo's. BSL Podotherapeut Totaal is overal toegankelijk; via uw PC, tablet of smartphone.

Extra materiaal
Literatuur
Over dit artikel

Naar de uitgave


text:
# How do you write a quadratic function in vertex form whose graph has the vertex (1, 8) and passes through the point (3, 12)?

Jun 14, 2018

$y = {\left(x - 1\right)}^{2} + 8$

#### Explanation:

$\text{the equation of a quadratic in "color(blue)"vertex form}$ is.

$\textcolor{red}{\overline{\underline{| \textcolor{w h i t e}{\frac{2}{2}} \textcolor{b l a c k}{y = a {\left(x - h\right)}^{2} + k} \textcolor{w h i t e}{\frac{2}{2}} |}}}$

$\text{where "(h,k)" are the coordinates of the vertex and a}$
$\text{is a multiplier}$

$\text{here } \left(h , k\right) = \left(1 , 8\right)$

$y = a {\left(x - 1\right)}^{2} + 8$

$\text{to find a substitute "(3,12)" into the equation}$

$12 = 4 a + 8$

$12 - 8 = 4 a \Rightarrow 4 a = 4 \Rightarrow a = 1$

$y = {\left(x - 1\right)}^{2} + 8 \leftarrow \textcolor{red}{\text{in vertex form}}$
graph{(x-1)^2+8 [-28.87, 28.86, -14.43, 14.44]}


text:
# An underline with texts one both ends of a line

I want to make a blank between texts on both ends of a line. For example,

\begin{enumerate}
\item There \hrulefill\ in the room.
\end{enumerate}

But, the above appears in student's version only, and I want to make a teacher's version where the answer is also printed in the blank. I don't have any idea but

\begin{enumerate}
\item There \underline{\makebox[100pt][l]{is a chair}} in the room.
\end{enumerate}

The method is not satisfactory because the length of the blank is unknown in advance.

My problems:

1. How to put text on an \hrulefill?

2. (A bonus question) I found out that the vertical position of the horizontal rule generated by \hrulefill and \underline is different. How can I control the vertical position of these horizontal rules?

-
Do you always want an \hrulefill to represent the missing word(s)? What about breaks over lines? – Werner Mar 13 '14 at 3:24
Welcome to TeX.SX! A tip: You can use backticks  to mark your inline code as I did in my edit. – Adam Liter Mar 13 '14 at 3:35
Werner: I do not always want an \hrulefill. What are breaks over lines? – HYC Mar 13 '14 at 5:55
Welcome to TeX.SX :-) Consider the exam document class. – Sean Allred Mar 13 '14 at 6:37

While cslstr's method is more robust, one way to do this is to replace the \hrulefill with one that uses underlines using \xleaders.

\documentclass[letter,10pt]{article}
\begin{document}
\begin{enumerate}
\item There \hrulefill{} in the room.
\item There \ulfrule{} in the room.
\item There \ulfrule{}\underline{is a chair}\ulfrule{} in the room.
\end{enumerate}
\end{document}

Which produces:

If you wanted the answer left aligned you can remove the beginning \ulfrule{} before the answer:

\documentclass[letter,10pt]{article}
\begin{document}
\begin{enumerate}
\item There \hrulefill{} in the room.
\item There \ulfrule{} in the room.
\item There \underline{is a chair}\ulfrule{} in the room.
\end{enumerate}
\end{document}

More on what \xleaders does can be found in this answer

-
This is almost what I need. However, I hope that the answer be aligned left rather than center inside the blank, yet a little space say 0.5ex should be left at the beginning of the blank. Could you teach me how to obtain it? – HYC Mar 13 '14 at 12:25
I updated the answer to allow for left aligned answers. – Alex Grede Mar 13 '14 at 12:32

Here's a simple implementation:

\documentclass{article}

\newif\ifteacher % starts out false

\unskip\ \lhrulefill{#1}%
\ifteacher\makebox[0pt]{#2}\fi
\lhrulefill{#1}\ \ignorespaces}
\newcommand{\lhrulefill}[1]{%
\leavevmode
\hskip\glueexpr#1/2\relax\relax % how much it should extend
\kern0pt
}

\begin{document}

\begin{enumerate}
\item There \fillanswer{is a chair} in the room.

\item There \fillanswer[5cm]{is a chair} in the room.

\teachertrue
\item There \fillanswer{is a chair} in the room.

\item There \fillanswer[5cm]{is a chair} in the room.
\end{enumerate}

\end{document}

The default value for the optional argument is \fill, which means that essentially \hrulefill is executed (but the rule is lowered). Actually we set two rules and the zero width box in between them when \ifteacher is set to true.

-
I have the very same task as in third item of your list so adopted your solution. Suddenly the problem arise: I have small space right in the middle of the hrule, so it seems that it is actually two rules separated by a space. Would you please explain hot to get rid of this space (proof pic: postimg.org/image/xy0xfpftr the space is under letter в). – Artem Pelenitsyn Jul 28 '14 at 18:29
@ArtemPelenitsyn You're missing a % after \makebox[0pt]{#1} – egreg Jul 28 '14 at 19:08
that's great, thank's! – Artem Pelenitsyn Jul 28 '14 at 20:02

This method uses some redefinitions of the \uline macro from ulem to print out just the underlining from some text (with the text itself invisible). (See this answer for a similar solution.)

I added a bit of space on each side of the text so the blank is a bit larger than it would need to be (to allow for handwriting). As illustrated, this will also gracefully handle very long "blanks" that end up extending over multiple lines.

The Student Version is made by keeping the first \let\filltheblanks... command and commenting the second. The Teacher version comments the first command and keeps the second.

\documentclass[]{report}

\usepackage{enumerate}
\usepackage[normalem]{ulem}

\begin{document}
\LARGE % Size seemed appropriate for this type of assignment

% Fill-in-the-blank command

% For Student Version
\let\filltheblanks\phantom

% For Teacher Version
\let\filltheblanks\null

% Redefined \uline
\makeatletter
\def\UL@putbox{\ifx\UL@start\@empty \else % not inner
\vrule\@width\z@ \LA@penalty\@M
\filltheblanks{\box\UL@box}%
\fi}
\makeatother
%%%%%%%%%%%%%%%%

\begin{enumerate}[1.]

\item There \fillintheblank{was a dog} in the room.

\item There \fillintheblank{was a very, large, wet and disgusting looking dog} outside my door.

\end{enumerate}

\end{document}

Student Version:

Teacher Version:

-

A Variation on the answer at Create fill-in-the-blank version of a document with ability to toggle blanks on and off

It provides \answer for continuous underline (with line breaks) and \answerwords for word-by-word underline. Uncomment \TeacherCopy in the preamble, and get the teacher version.

EDIT, per Manuel's request, I leave extra space for the student's answer, which I accomplish by setting the fontsize to \Huge prior to commencing the underlining blackout, and then resetting it afterward (note that this does not affect the vertical height allocated for the answer, since the Huge text is converted into a vertically-challenged rule of the same width).

REEDITED so that teacher version provides same word spacing as student version.

The \censorruleheight and \censorruledepth can be altered to change the elevation the rule thickness and placement, respectively.

\documentclass{article}
\usepackage{censor}
\usepackage{xcolor}
\usepackage{ifthen}
\censorruledepth=-.2ex
\censorruleheight=.1ex
\newcounter{index}
\def\mysize{\Huge}
\def\TeacherCopy{%
\color{red}%
\getargsC{##1}%
\setcounter{index}{0}%
\whiledo{\theindex<\narg}{%
\stepcounter{index}%
\setbox0=\hbox{\mysize\csname arg\romannumeral\theindex\endcsname}%
\underline{$\vphantom{g}$%
\makebox[\wd0]{\csname arg\romannumeral\theindex\endcsname}}%
\mysize\ \normalsize%
}%
\unskip%
\color{black}%
}%
}
%\TeacherCopy
\parindent0pt
\begin{document}
\begin{enumerate}
\item And the answer to life, the universe, and everything, is \answer{forty two}.

\item The beginning six words of the Gettysburg Address are
\answerwords{Four score and seven years ago}.

\end{enumerate}
\end{document}

Student copy:

Teacher copy:

-
An extra space for the \answer command and an extra space for any word in the \answerwords would be great. Since handwriting is more spaced. – Manuel Mar 13 '14 at 10:56
@Manuel Done, per your request. – Steven B. Segletes Mar 13 '14 at 11:01
It's not OP's request. Just me making a suggestion :P – Manuel Mar 13 '14 at 11:10
censor` is nice, but one downside is that the positioning of the text when censored in this case is not the same as when uncensored. The blanks move, if you will. Not always an issue, but sometimes makes it more difficult to match things up quickly when you are looking at a whole page of these. – cslstr Mar 13 '14 at 11:25
@cslstr See revised answer. – Steven B. Segletes Mar 13 '14 at 12:04


text:
## Projection theorems using effective dimension

In this post I will describe how to use effective dimension to investigate how the fractal dimension of a set changes when projected onto a linear subspace. The first theorem investigating this behavior is the celebrated Marstrand projection theorem.

Theorem (Marstrand’s projection theorem): Let $E \subseteq \mathbb{R}^2$ be an analytic set. Then for almost every angle $\theta$,

$\text{dim}_H(p_\theta E) = \min\{1, \text{dim}_H(E)\}$,

where

$p_\theta(x, y) = x\cos \theta + y\sin\theta.$

Filed under Uncategorized

## The dimension spectra of planar lines

I recently uploaded a paper solving the dimension spectrum conjecture. I wanted to write a post explaining some of the intuition behind the proof.

The theme of the conjecture is to better understand the randomness of points on a line. Let (a, b) be a slope-intercept pair. The dimension spectrum of a line (a,b) is set of all effective dimensions of points on that line, i.e.,

$\text{sp}(L_{a,b}) = \{\text{dim}(x, ax + b) \, \vert \, x \in [0, 1]\}$.

In the early 2000s, Jack Lutz conjectured that the dimension spectrum of any line in the plane contains a unit interval.

Filed under Uncategorized

## Effective dimension of points on a line

The purpose of this post is to describe the strategy Neil Lutz and I used to prove lower bounds on the effective dimension of points on a line in $\mathbb{R}^2$. This strategy seems quite general, and has been the basis for a variety of results (e.g. https://arxiv.org/pdf/2102.00134.pdf, https://arxiv.org/pdf/1711.02124.pdf and https://arxiv.org/pdf/1701.04108.pdf).

In this post I will focus on the effective dimension of points. However, one of primary motivations of this work is that  lower bounds on effective dimension can be converted into lower bounds on the (classical) Hausdorff dimension of sets. For example, Neil and I used the lower bounds on the effective dimension of points on a line to give better bounds on certain classes of Furstenberg sets. In a future post I might describe how to convert effective theorems into classical theorems using the point-to-set principle of Jack and Neil Lutz.

Filed under Uncategorized

## Hello world

Welcome to my Math + CS blog! I plan on using this blog to talk about my research and to post lecture notes.

Quick test of Latex functionality:

$dim_H = \min\limits_{A \subseteq \mathbb{N}} \sup\limits_{x\in E} dim^A(x)$.


text:
# Radioactive decay versus compound interest

1. Sep 17, 2011

The fact that radioactive decay and continuous compound interest end up with the same formula (with the "rate" being negative in the former and positive in the latter) seems to me to be more a result of the ubiquity of the exponential function in solving differential equations than any common physical principle underlying both processes --the mechanism for the interest requires a "memory" and is dependent on the total, whereas the probability for each particle cannot be dependent on any memory or influence from other particles . But I could easily be wrong. If I am, could someone elucidate this principle?

2. Sep 17, 2011

### Pengwuino

I wouldn't say either requires a memory. Suppose you have something at 10% compound interest. $1 is going to turn into$1.10 after that period regardless if it's the only dollar in the account or if it's part of $1000 in the account. The new money created really doesn't care where it came from. That new$.10 in the $1 account is going to earn 10% interest itself and generate$0.01 the next period. All that matters is that it exists and the same process will happen to it as happened to the full $1 earlier. So in neither situation is the actual$.10 or a single particle dependent on the total. That $.10 will earn$.01 more regardless if there is $1.10 in the account or$1,000.10 in the account.

I think your line of thinking is missing the idea that the particle acts independent of what's going on in the whole, but not realizing that a dollar will act independent of what's going on in the whole as well.

3. Sep 17, 2011

### JeffKoch

dN/dt is proportional to N in both cases, which is why you get exponentials. I don't think there's anything more mystical than this - in both cases the rate of change dN/dt depends on how much you have, N, at that particular time t.

4. Sep 18, 2011


text:
# Deep space communications BER and FEC?

What kind of bit error rate do they get from deep space communications (Pioneer, Voyager, et.al.), and what kind of modulation and FEC allows them to recover messages with that microscopic level of received signal power?

Are there more modern modulation methods and encoding schemes for similar channel conditions?

For many years the state of the art was to use a convolutional "inner code" and a block "outer code". The "inner" and "outer" terminology come from the following block diagram:

$$\boxed{\scriptstyle \rm Payload}{\longrightarrow}\boxed{\scriptstyle\textrm{Outer Encode}}{\longrightarrow}\boxed{\scriptstyle\textrm{Inner Encode}}{\longrightarrow}\boxed{\scriptstyle\rm Channel}{\longrightarrow}\boxed{\scriptstyle\textrm{Inner Decode}}{\longrightarrow}\boxed{\scriptstyle\textrm{Outer Decode}}{\longrightarrow}\boxed{\scriptstyle\rm Payload}$$

Convolutional codes were used as the inner code because they are very powerful and can correct a large number of bit errors. They have a weakness, though- when there are lots of errors that are close together they can break down and spit out errors in a burst at that location. The outer code is used to correct those bursts of errors. Block codes are not as powerful as convolutional codes (do not use as many parity bits/symbols either), but they are good at dealing with bursts of errors. Also, there was usually a deinterleaver in between the inner and outer codes that spread the bursts of errors among many blocks, making it even easier for the block code to correct them.

As Wikipedia's Deep Space Telecommunications section says, early on the inner/outer codes were Viterbi (convolutional) and Reed-Muller codes. Later they were Viterbi and Reed-Solomon codes.

In the early 90's Turbo codes were discovered and took the FEC world by storm. In the 2000's low-density parity check codes have grown in popularity. They were discovered in 1960 by Gallagher, but were not feasible to implement until recently because of the computational load that they require. Both Turbo and LDPC codes are near optimal in the sense that they get very close to the Shannon limit of what it is possible to achieve with FEC. Presently NASA uses both Turbo and LDPC codes, as far as I'm aware.

Like designing any reliable communications system, designing reliable deep space communications requires more than just adding powerful FEC. Signal power, free-space path loss, receiver noise, etc., must be taken into consideration. Deep space communications actually have a lot of advantages and two enormous disadvantages. The disadvantages are the enormous distance and the limited transmitter power. The advantages are the really high-gain directional antennas, the low noise that the earth dishes get from looking into empty space, the even lower noise they get by cooling their receivers with liquid nitrogen, etc. They can also slow down their data rate while keeping the transmitted power constant to give each bit more energy.

Interleaved convolution coding can be used to reduce the ECC overhead and wastage/saving of bandwidth used for parity information.

1. Split the data into N streams. Assume there are 8 streams and therefore each bit of a byte goes in a separate stream.
2. Transmit the convoluted bit of each stream sequentially.
3. Thus if there is a burst error of say 5-bits it will just affect a single bit of each stream.
4. The maximum length of recoverable burst error is number of streams N x sequential correction capability of each stream.

For instance if your convolution coding is capable of correcting up to 2 consequent bit errors then for an 8 stream interleaved coding you can correct up to 16 errors.

• Doesn't really answer the question asked, does it? – Dilip Sarwate Dec 23 '16 at 8:02


text:
# Working fluid

A working fluid is a pressurized gas or liquid that actuates a machine. Examples include steam in a steam engine, air in a hot air engine and hydraulic fluid in a hydraulic motor or hydraulic cylinder. More generally, in a thermodynamic system, the working fluid is a liquid or gas that absorbs or transmits energy.

## Properties and states

The working fluid properties are essential for the full description of thermodynamic systems. Although working fluids have a very large number of physical properties which can be defined, the thermodynamic properties which are often required in engineering design and analysis are few. Pressure, temperature, enthalpy, entropy, specific volume and internal energy are the most common.

Pressure–volume diagram showing state (p,V)

If at least two thermodynamic properties are known, the state of the working fluid can be defined. This is usually done on a property diagram which is simply a plot of one property versus another.

Typical thermodynamic process for a working fluid (expansion from state 1 to state 2)

When the working fluid passes through engineering components such as turbines and compressors, the point on a property diagram moves due to the possible changes of certain properties. In theory therefore it is possible to draw a line/curve which fully describes the thermodynamic properties of the fluid. In reality however this can only be done if the process is reversible. If not, the changes in property are represented as a dotted line on a property diagram. This issue does not really affect thermodynamic analysis since in most cases it is the end states of a process which are sought after.

## Work

The working fluid can be used to output useful work if used in a turbine. Also, in thermodynamic cycles energy may be input to the working fluid by means of a compressor. The mathematical formulation for this may be quite simple if we consider a cylinder in which a working fluid resides. A piston is used to input useful work to the fluid. From mechanics, the work done from state 1 to state 2 of the process is given by

$W = -\int_{1}^{2} \mathbf{F} \cdot \mathrm{d}\mathbf{s}$

Where ds is the incremental distance from one state to the next and F is the force applied. The negative sign is introduced since in this case a decrease in volume is being considered. The situation is shown in the figure which follows.

Work input on a working fluid by means of a cylinder-piston arrangement

The force is given by the product of the pressure in the cylinder and its cross sectional area such that

$W = -\int_{1}^{2} \mathit{pA} \cdot \mathrm{d}\mathbf{s}$
$W = -\int_{1}^{2} \mathit{p} \cdot \mathrm{d}\mathit{V}$

Where A.ds = dV is the elemental change of cylinder volume. If from state 1 to 2 the volume increases then the working fluid actually does work on its surroundings and this is commonly denoted by a negative work. If the volume decreases the work is positive. By the definition given with the above integral the work done is represented by the area under a pressure - volume diagram. If we consider the case where we have a constant pressure process then the work is simply given by

$W = -\mathit{p}\int_{1}^{2} \mathrm{d}\mathit{V}$
$W = -\mathit{p} \cdot \mathrm{(V_2-V_1)}$

Constant pressure process on a p-V diagram

## Choice

Depending on the application, various types of working fluids are used. In a thermodynamic cycle it may be the case that the working fluid changes state from gas to liquid or vice versa. Certain gases such as Helium can be treated as ideal gases. This is not generally the case for superheated steam and the ideal gas equation does not really hold. At much higher temperatures however it still yields relatively accurate results. The physical and chemical properties of the working fluid are extremely important when designing thermodynamic systems. For instance, in a refrigeration unit, the working fluid is called the refrigerant. Ammonia is a typical refrigerant and may be used as the primary working fluid. Compared with water (which can also be used as a refrigerant), ammonia makes use of relatively high pressures requiring more robust and expensive equipment.

In air standard cycles as in gas turbine cycles, the working fluid is air. In the open cycle gas turbine, air enters a compressor where its pressure is increased. The compressor therefore inputs work to the working fluid (positive work). The fluid is then transferred to a combustion chamber where this time heat energy is input by means of the burning of a fuel. The air then expands in a turbine thus doing work against the surroundings (negative work).

Different working fluids have different properties and in choosing one in particular the designer must identify the major requirements. In refrigeration units, high latent heats are required to provide large refrigeration capacities.

## Applications and examples

The following table gives typical applications of working fluids and examples for each:

Application Typical working fluid Specific example
Gas turbine cycles Air
Rankine cycles Water/steam, pentane, toluene
Vapor-compression refrigeration, heat pumps Chlorofluorocarbons, hydrochlorofluorocarbons, fluorocarbons, propane, butane, isobutane, ammonia, sulfur dioxide Commercial refrigerators, Air conditioners
Reusable launch vehicle extensible vertical-landing legs Helium[1] SpaceX reusable launch system development program


text:
# 4th Class Mathematics Area, Perimeter and Volume Area

## Area

Category : 4th Class

### Area

Look at the following pictures:

Shaded part in the figures given above represents area. So area is a mathematical term which tell us how much surface a particular object requires to be placed. Thus, we can say that area is the amount of surface which a particular object occupies.

Let us study about the area of some geometrical figures.

Area of a Triangle

Area of a triangle is half of the product of the base and corresponding height. So to find the area of a triangle we multiply the base and corresponding height of the triangle and then divide the product by 2.

Thus Area of a triangle$=\frac{1}{2}\times \text{Base}\times \text{Height}$

Area of the triangle $\text{ABC}=\frac{1}{2}\times \text{AD}\times \text{BC}$

Height

In a triangle, the length of the line segment which joins one vertex to the opposite side (on extending or without extending) making the angle of 90° is called height of the triangle.

LO, PQ and AD are heights of the triangles $\Delta \text{LMN},\Delta \text{PQR}$ and$\Delta \text{ABC}$respectively.

Base

Base is the side of the triangle to which height is drawn.

BC, LN and PQ are the bases of the triangles $\Delta \text{ABC},\text{ }\Delta \text{LMN},$and$\Delta \text{PQR}$respectively.

Find the area of the triangle ABC as shown in the following figure.

Solution:

Area of the triangle$\text{ABC}=\frac{1}{2}\times \text{Base}\times \text{Height}$ $=\frac{1}{2}\times \text{BC}\times \text{AD}=\frac{1}{2}\times \text{7cm}\times \text{1}0\text{ cm}=\text{35 c}{{\text{m}}^{\text{2}}}$.

Area of a Rectangle

Area of a rectangle is equal to the product of its length and breadth. So to find the area of the rectangle we multiply the length of the rectangle by breadth of the rectangle. Thus area of a rectangle$=\text{Length}\times \text{Breadth}$

Area of the rectangle$~\text{ABCD}=\text{AB}\times \text{BC}$

Length

The longer side of a rectangle is called length of the rectangle.

Look at the following figure:

AB or CD is the length of the rectangle ABCD

The smaller side of a rectangle is called breadth of the rectangle.

Look at the following figure:

PR or QS is the breadth of the rectangle PQRS.

Find the area of the given rectangle.

Solution:

In rectangle ABCD, length AB = 6 cm and breadth BC = 4.5 cm

Thus area of the rectangle$\text{ABCD}=\text{AB}\times \text{BC}=\text{6}$$\text{cm}\times \text{4}.\text{5cm}=\text{27c}{{\text{m}}^{\text{2}}}$

Area of a Square

We know that all the squares are also rectangles and area of a rectangle is found by multiplying the corresponding sides (length and breadth) of the rectangle. In a square, all the sides are equal so area of the square is equal to the product of any two sides. So to find the area of a square we multiply length of any two sides of the square. Thus, area of a square$=\text{Side}\times \text{Side}=\text{Sid}{{\text{e}}^{\text{2}}}$

Area of the square $\text{ABCD}=\text{AB}\times \text{AB}=\text{A}{{\text{B}}^{\text{2}}}$

Find the area of the following square.

Solution:

ABCD is a square

$\text{AB}=\text{BC}=\text{CD}=\text{DA}=\text{4 cm}$

Area of the square$\text{ABCD}=\text{Side}\times \text{Side}=\text{4cm}\times$$\text{4 cm}=\text{16 c}{{\text{m}}^{\text{2}}}$

Area of a Circle

To find the area of a circle, square of the radius is multiplied by a constant (constant is a value which does not change). Symbol of the constant is$\pi$whose value is$\frac{22}{7}$

Thus, area of the circle$=~\pi \times \text{radiu}{{\text{s}}^{\text{2}}}$

Or Area of the circle$=~\pi {{r}^{\text{2}}}$

Find the area of the following circle:

Solution:

Area of the circle$=~\pi {{r}^{\text{2}}}$

$=\frac{22}{7}\times \text{3}.\text{5 cm}\times \text{3}.\text{5 cm}=\text{33}.\text{5 c}{{\text{m}}^{\text{2}}}$

#### Other Topics

You need to login to perform this action.
You will be redirected in 3 sec


text:
19 questions linked to/from Tag management 2020
13k views

### List of comment templates

Inspired by this question on meta.cstheory.SE. The post at meta.Tex.SE is quite impressive. We often leave generic comments to OP and answer posters such as "if this is a homework, please add a tag," ...
4k views

### 2020 Moderator Election Q&A - Questionnaire

In connection with the 2020 moderator election, we are holding a Q&A thread for the candidates. Questions collected from an earlier thread have been compiled into this one, which shall now serve ...
3k views

### Tag management 2016 [duplicate]

Since it is a new year and the old Tag Management question has already over 70 answers, it is time for a new Tag Management thread. Rules of the game are basically the same: Post your suggestion as ...
2k views

### Tag cleanup 2014 [duplicate]

Tags need a regular cleanup. There was a number of questions on particular tags recently — but (while proposals for some really major changes should, perhaps, be posted as separate questions) maybe a ...
2k views

### Tag management 2019 [duplicate]

New year, new tag management thread. Rules of the game are basically the same: Post your suggestion as an answer here if you see A particularly bad tag (a rule of thumb: «if I can't imagine a ...
2k views

### Tag management 2017 [duplicate]

New year, new tag management thread. Rules of the game are basically the same: Post your suggestion as an answer here if you see A particularly bad tag (a rule of thumb: «if I can't imagine a ...
796 views

### Can we please delete the high-school tag? [duplicate]

This is one of those "meta" tags. Currently there are 31 questions with this tag: https://math.stackexchange.com/questions/tagged/high-school There are 4-5 questions which specifically talk about ...
185 views

### Should (convergence-divergence) include divergence/convergence of integrals?

According to the tag-info, convergence-divergence is intended for convergence/divergence of sequences and series. Here is the revision history for the tag-excerpt and the tag-wiki. However, in ...
345 views

### The tags (probability) and (probability-theory)

What is the difference between (probability) and (probability-theory)? If there is none, is it better to use both tags or to decide on one (by tossing a fair coin, of course)?
212 views

### Enlarging the scope of the epsilon-delta tag

The epsilon-delta tag is used for questions about limits and continuity which use the $\varepsilon$-$\delta$ definition of such concepts. However, it is sometimes also used for a slightly different ...
522 views

### Should there be a separate tag for Euler's number $e$?

At the moment, there are two tags which are related to the number $e$. The e has been synonym of exponential function for a long time.1 A newer tag called eulers-number was created in January 2019. ...
96 views

### What is the difference between merging two tags and synonymizing two tags?

Two tags can be made synonyms and they can also be merged. What is the difference between these two things? I am referring here to the terminology used in this post. It contains a list of changes in ...
240 views

### About [probability-theory] tag

Almost four years after this discussion, and I think that the current situation is not ideal and we need some rethinking. Users keep tagging with probability-theory questions that should be tagged ...


text:
hex editing in visual studio

This topic is 4732 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

I can't get my binary file to be opened in hex format by VS. The MSDN example opens fine, but mine appears as 4 "y"s with 2 dots above each. I tried right-clicking -> edit, but it still won't work. Any ideas? Here is the code to save the file:
using System;
using System.IO;

namespace BinaryFileIO
{
public class MainClass
{
public static void Main()
{
string fileName = "test.data";
using(FileStream fileStream = new FileStream (fileName, FileMode.Create))
{
using (BinaryWriter fileWriter = new BinaryWriter(fileStream))
{
fileWriter.Write((byte)System.Byte.MaxValue);
fileWriter.Write((byte)System.Byte.MaxValue);
fileWriter.Write((byte)System.Byte.MaxValue);
fileWriter.Write((byte)System.Byte.MaxValue);
}
}
using(FileStream fileStream = new FileStream (fileName, FileMode.Open, FileAccess.Read))
{
{
}
}
}
}
}

I noticed something about the MSDN example. They close the binary writer twice for no reason, and they don't close filestream and binary reader after they have been opened:
using System;
using System.IO;
class MyStream
{
private const string FILE_NAME = "Test.data";
public static void Main(String[] args)
{
// Create the new, empty data file.
if (File.Exists(FILE_NAME))
{
return;
}
FileStream fs = new FileStream(FILE_NAME, FileMode.CreateNew);
// Create the writer for data.
BinaryWriter w = new BinaryWriter(fs);
// Write data to Test.data.
for (int i = 0; i < 11; i++)
{
w.Write( (int) i);
}
w.Close();//*******************Closed once************************
fs.Close();
// Create the reader for data.
fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);
for (int i = 0; i < 11; i++)
{
}
w.Close(); //************Closed again for no reason.  fs and r are not closed***************
}
}

Share on other sites
In VS6: File->Open->Select file->Open as type "binary"->Open. This will get you into hex-editing mode. I'm sure there is an analogous process in VS.Net but I can't remember it off the top of my head, as I haven't been using VS.Net for very long.

Share on other sites
Thanks [smile], but I looked around for what you described (or something similar), but I couldn't find it. The strange thing is that the MSDN's example opens fine.

Share on other sites
in VC++ .NET 2003 you go to File->Open->File and you click on the little upside-down triangle thing next to the open button, then click "open with" to open stuff in various modes. I only see binary on mine. But the debug memory tools allow hex, I don't know why they don't have stuff like that for files too..

Share on other sites
Haha, that was it! [smile]

Thanks for the help! If only I knew why my file won't open like that from a windows folder, when the msdn example does.

Share on other sites
Depending on the file type of the MSDN sample, it might be set up in the registry to automatically open in binary mode with VS. I'm not familiar with the specific sample you're referring to, though, so that's pure speculation.

Share on other sites
It is the example that I posted. I used the exact same file name/extension as the example, too...

Share on other sites
Hmm... that makes it doubly bizarre then...

Share on other sites
It might scan the file to try and determine if it should open it as a binary or text.

Share on other sites
Quote:
 Original post by Nemesis2k2It might scan the file to try and determine if it should open it as a binary or text.
Yes, it does. It indeed has nothing to do with the file type.
I'm not sure how much of the contents it looks at, but if it thinks that the bit if looks at could conceivably be text, then it wont open it in the binary editor.
Also, if you ask me, it's method of deciding whether to open it in the binary editor or not is utter crap and often gets it wrong.

• 9
• 9
• 13
• 41
• 15


text:
# Let G be the graph with vertices v_{1}, v_{2} and v_{3} and the matrix begi

Let G be the graph with vertices ${v}_{1},{v}_{2}$ and ${v}_{3}$ and the matrix $\left[\begin{array}{ccc}1& 1& 2\\ 1& 0& 1\\ 2& 2& 0\end{array}\right]$
To find the number of walks of from ${v}_{1}$ to ${v}_{3}$ we need to find matrix ${A}^{2}$

You can still ask an expert for help

## Want to know more about Discrete math?

• Questions are typically answered in as fast as 30 minutes

Solve your problem for the price of one coffee

• Math expert for every subject
• Pay only if we can solve it

hajavaF

Step 1
${A}^{2}=\left[\begin{array}{ccc}1& 1& 2\\ 1& 0& 1\\ 2& 2& 0\end{array}\right]×\left[\begin{array}{ccc}1& 1& 2\\ 1& 0& 1\\ 2& 2& 0\end{array}\right]$
${A}^{2}=\left[\begin{array}{ccc}6& 5& 3\\ 3& 3& 2\\ 4& 2& 6\end{array}\right]$
The $i{j}^{th}$ element in matrix ${A}^{2}$ represents the number of walks from ${v}_{i}$ to ${v}_{j}$ of length 2.
We can see from matrix ${A}^{2}$ that the element ${a}_{13}$ is 3. This implies that there are 3 walks of length 2 from ${v}_{1}$ to ${v}_{3}$


text:
Google Summer of Code, Final Thoughts

GSoC ROOT

Three months have already passed since the beginning of the programme, and the only task that is still in my TODO list is the writing of this post as my Work Product Submission report. Let’s cross it out.

Disclaimer: This post will be quite technical and probably really boring if you are not very interested in the ROOT development.

1. TL;DR
2. Detailed Final Report
1. Previous State of ROOT
2. Using The New Code
3. Dissecting the Code
4. Result Analysis
3. Conclusions

TL;DR

If you just want to know what have been accomplished and the work that is left to do, you will find here a short description covering the highlights of my summer.

If you are brave enough and do not fear tricky details and documented decisions in the code design, go to the detailed section and enjoy.

What Have I Done?

In a few words, my work in ROOT can be summarised as the generalization of the fitting algorithms interfaces in order to have parallelized and vectorized implementations that make the algorithms, and thus the computations of the final user, more efficient.

What Code Has Been Merged?

At the end of the programme, three pull requests (PR) were merged:

The most important work is done in this PR, where the gradient interfaces are generalized and the parallelized and vectorized versions of Chi2, LogLikelihood and PoissonLikelihood gradient evaluations are implemented. The whole PR was squashed into this one commit when it got merged into master.

After the first PR was merged, we saw that some tests failed if IMT was disabled. The problem was that those tests tried to use the multithread execution policy in FitUtil even if no parallelization was enabled. This commit, that you can see here in the master branch, fixed this problem forcing the execution policy to be ROOT::Fit::ExecutionPolicy::kSerial while warning the user that such a change has been made.

The classes storing the data in the fitting algorithms —FitData, BinData and UnBinData— play an important role in the vectorization. In order to ease the vectorization of the algorithms, this PR adds padding to every vector in these classes: the ones storing the coordinates, the data and the errors; assuring the length of the vectors is a multiple of the SIMD vector size. The commit merging this PR in the ROOT repo can be found here.

What Code Has Not Been Merged?

Three PRs remained unmerged at the end of the programme, but they contain useful work that should be used after GSoC finishes:

This PR completes the work of the fitting interfaces generalization, providing the user the possibility to use gradient functions in their fittings. It also adds integration tests to check everything works as a whole.

This second unmerged PR is part of an important ongoing work: the implementation of vectorized versions of the most important functions in TMath.

This PR adds tests to check that the evaluations of the gradient of multidimensional functions, implemented in the first merged PR, are correct.

What Is Left To Do?

After GSoC finishes, the ROOT developers may want to complete some of the work I started during the summer that did not get merged before the final evaluation. In particular, the unmerged PRs should be finished and merged: the bug stopping the first PR to be merged should be fixed, the remaining functions in TMath should be vectorized and the failing test of the last PR should be inspected and the bug causing it should be fixed.

Detailed Final Report

Ok, so now that you have an overall idea of my summer work, I will describe the details and decisions behind the lines of code written through these months.

Previous State of ROOT

Before GSoC17, ROOT had a good set of interfaces for fitting data; see, for example, the section 5. Fitting Histograms of the User’s Guide to make an idea of what ROOT can do for you. However, these interfaces were tied to a specific base type; namely, they worked only with doubles. Furthermore, the code was first designed to serve as a set of serial algorithms, and parallelization was not taken into account.

Considerable work has been done before the programme in order to generalize these interfaces and add the possibility to use other types and other execution policies. See, for example, the struct Evaluate in FitUtil.h, where the evaluations of Chi2, LogLikelihood and PoissonLikelihood functions were adapted to have vectorized and parallelized versions.

However, a lot more work in this direction needed to be done, and my summer has mainly focused on providing the possibility to evaluate vectorized and parallelized vrsions of Chi2, LogLikelihood and PoissonLikelihood gradient functions.

Using The New Code

Ok, so we all know that my code has nice tricky details and the commits I did on the PRs are super cool, but before describing all the work that has been done, let’s see how to use the new methods and the good results we can obtain.

To illustrate the main work done with the fitting interfaces and the gradients, we are going to inspect —a slightly simplified version of— the tests in testGradient.cxx.

These tests assume that the user have some data to fit into a model defined by the following function:

First of all, you would need to create a TF1 to hold your function with initial parameters and a TH1 to hold your data —here we have randomised data generated from the model function—. With the work done during the summer, you can now use data types other than double for your model functions, so let’s use here ROOT::Double_v:

Now we can use a wrapped TF1 object to store our fitting function and populate a BinData object with the data from the histogram.

And now to the fun part! We can create either a Chi2, PoissonLikelihood or LogLikelihood fitter with the vectorized fitting function and a multithread execution policy!

Whatever the fitter you choose, what we can do now is to call its Gradient method:

That this one last line works may seem trivial or unimportant, but it has been a lot of work and the results are really worth it! Check out the Result Analysis section to see a deeper study of the benchmarks done.

Mathematical Functions

In top of the generalization of the gradient interfaces, one important task has been started: the vectorization of the functions in TMath. This will be also completely transparent to the final user.

For example, look at the differences between using the scalar and vectorized versions of TMath::Gaus. Assuming that we are on a machine where the size of a ROOT::Double_v vector is 2 and that vectorizedData is a ROOT::Double_v that contains the same values that data1 and data2, both of type double; the output from this:

will be the same as the output from this:

Yes, that’s true. The only difference is the type of the value passed to the functions and the output returned from them. The latter version would be, of course, approximately two times faster than the first. How cool is that?

Dissecting the Code

Now that we know how to use the new code and how the final user will see the efficiency of its code automatically improving, we will explain in this section the technical details of the work done through the summer, studying the most important commits of the PRs done. Let’s go!

Let us now describe in detail the main work of this project, implemented in this PR. Let us inspect every commit to see what I did and why:

• Commit 16cbcb5 : The very first commit I pushed to my ROOT fork implemented a parallelized version of the method FitUtil::EvaluateChi2Gradient. This was pretty direct, as I just had to add a new version of the method using the parallelization techniques provided by ROOT; in particular, ROOT::TThreadExecutor::MapReduce. This was implemented following the example of the method FitUtil::EvaluateChi2, which was already parallelized in the Evaluate struct. The finished implementation can be seen in the file FitUtil.cxx, method FitUtil::EvaluateChi2Gradient.
• Commit b705cf4 : This commit implemented a really important work, as all the remaining commits depended greatly on it: the generalization of the gradient interfaces; namely:
• In IFunction.h, the interface IGradient{,Function}MultiDim was templated, keeping its double specialization in IFunctionFwd.h as a typedef that matched the old name in order to preserve backwards compatibility.
• In ParamFunction.h, the interface IParametricGradFunctionMultiDimTempl was adapted to use the new IGradientFunctionMultiDimTempl, and the gradient-related methods were templated as well.
• Commit f48ee1d: While the previous commit templated the gradient interfaces, this one templated the gradient implementations; namely:
• The method TF1::GradientPar, in TF1.h, was templated and its vectorized version was implemented.
• The methods WrappedMultiTF1Templ::ParameterGradient and DoParameterDerivative in WrappedMultiTF1.h were templated. In this case, I needed to use some tricks to bypass cases where TFormula::EvalPar was called, as it is not vectorized yet.
• Commit cad190c: After the previous commit had made the vectorization scenario possible, this one tested it out by implementing a vectorized (and parallelized) version of FitUtil::EvaluateChi2Gradient.
• Commit 448b894: To test the previous work, a GoogleTest was added. The previous study on the test is based on the work done here.
• Commits d81308c, 7da041d, 66a4d9b, 3acfc87 and 2ef06c9 introduced a bunch of refactors and bug fixes, but they are not that important to understand the whole of the work done.
• Commit bd8a250: This commit introduced an important change, as it modified a critical method, TF1::GradientPar, to make it thread-safe. It was necessary that this method was thread-safe, otherwise, the parallelizations that would use it would have been unsafe. Before this commit, TF1::GradientPar modified the private member fParameters. In a multi-threaded scenario, this produced race conditions when other threads needed to access this same member. Now, GradientPar modifies a local copy of fParameters. Others techniques to make the method thread-safe were studied, but all of them were rejected:
• Making fParameters thread_local: this first option did not make sense, as fParameters is a non-static member and thus cannot be made thread_local.
• Using a mutex to atomically call GradientPar: to decide between this option and the one that was finally implemented, I did a quick benchmark, and saw that implementing the mutex made the parallelized version even slower than the original one, but always copying the vector inside GradientPar made the original version slower than before (although the parallelized version was in that case faster, as expected).
• Commit 33229b3: This is a huge commit that implemented both parallelized and vectorized versions of the gradients of the two remaining fitting methods: PoissonLikelihood and LogLikelihood. I also added here tests to check that these new implementations were correct. This commit, then, can be thought as the union of the first, fourth and fifth described commits, but instead of focused on Chi2, it was focused on both PoissonLikelihood and LogLikelihood.
• Commit 66db096: Final commit to adapt to a change to the codebase that was made while I was working in my local branch.

Integrating Everything

After the generalization of the gradient interfaces and the implementation of the gradient evaluation of the three main functions in the fitting algorithms, we still have one thing to do: to integrate everything so that the user do not have to worry about the details behind the calls they make. And here it comes one of the unmerged PRs, where ROOT::Fit::Fitter is adapted so that it can work with functions with templated gradients. This way, the user will be able to call the Fit method, so that they have nothing to change in their code but it is still way more efficient.

Let’s see the two unmerged commits to know how the integration is made:

• Commit df7bb2d: The main work of this PR is done here. In top of the IGradModelFunction used by the Fitter class, this commit adds a new typedef for the vectorized model functions with gradient: IGradModelFunction_v. The main changes can be found on Fitter::DoLeastSquareFit, Fitter::DoBinnedLikelihoodFit and Fitter::DoUnbinnedLikelihoodFit, that perform the fit using the now well-known classes Chi2FCN, PoissonLikelihoodFCN and LogLikelihoodFCN, respectively. Here, the commit adds one case uncovered until now: the case for vectorized functions with implementing the gradient interface. The new code handles the case calling the *FCN classes correspondingly, using the work done until now in the main PR.
• Commit 59e3fb9: To check that the new code works, the scalar, vectorial, unbinned and binned fitting cases are tested here. These tests are the reason why the PR is still unmerged, as they expose one bug that make the unbinned fit test fail.

Here we should also talk about one of the other merged PRs: the one adding the padding to all vectors in FitData and its children. FitData is basically a wrapper of an std::vector, and to ease the vectorization and the vectorized loops on the fitting data, this PR pushes a single commit that generalizes the notion of padding to all coordinates, data and error vectors that are abstracted out by FitData, BinData and UnBinData. The idea behind this is to assure that the length of these vectors is always a multiple of the SIMD vector size, so that when we loop over them jumping as many elements as one vector can hold, we do not get into the terrifying world of uninitialised memory. This PR just adds a static function, FitData::VectorPadding, that computes the remaining of elements that should be artifiacilly added to a vector in order to have a length that is a multiple of the SIMD vector size. This function is then used throughout the initialising and resizing code of FitData and its children to ensure that everything is safe for the final user.

Nice Touches

Just to finish this report, we should talk about the ongoing work of vectorizing the functions in TMath. This work is started by this unmerged PR. Here, I added vectorized implementations of six functions:

• TMath::Min
• TMath::Gaus
• TMath::BreitWigner
• TMath::CauchyDist
• TMath::LaplaceDist
• TMath::LaplaceDistI

These versions, implemented in TMathVectorized.cxx, are good examples to know how to vectorize any function in TMath.

I have followed the same procedure with all previous functions in order to implement their vectorized versions so, as an example, we can study TMath:Gaus comparing the old serial code with the new vectorized version.

The code for the serial case can be see here:

The code for the vectorized case is the following:

The first thing that we can see is that there is a SFINAE technique to compile the vectorized version only if the type ROOT::Double_v is different from double. This is required because there are some configurations in the building of ROOT that can make ROOT::Double_v to be just a typedef of double; if that occurs, we don’t want to compile a version re-implementing the same function, so that first template line make the compiler ignore the definition in that case.

The body of the two functions is basically the same, with the exception of the types and the branching code. When you are writing vectorized code with VecCore, you must take care of all the if statements you find. VecCore uses vectorization masks to implement the logic of branching, as we are dealing with several values that can react differently to a same condition.

For example, you can see that the code branches depending on the absolute value of arg. This branching is implemented in the vectorized version using the Blend function from VecCore library, that takes a mask as a first argument, the value that should be returned in case the condition is met as the second argument, and the value to return if the condition is not met as the third and last argument. This way, we can assign the correct value to every element in a vector.

There are some subtleties in the vectorization of functions, but for implementing a vectorized version of any TMath function Foo you just have to follow these steps:

1. Copy the Foo header from TMath.h and paste it in TMathVectorized.h.
2. Add the template <class NotCompileIfScalarBackend> line to make sure the vectorized version is compiled only when needed.
3. Modify the type of the input data to its vectorized version —double should be converted to ROOT::Double_v, int should be converted to Int_v…—, taking care that the functions cannot use a vectorized type passed by value: use references everywhere!
4. Modify the return type if needed.
5. Translate the body from the scalar case making sure the branching is implemented correctly using the vectorized masks.
6. Implement a test in math/mathcore/test/vectorization directory checking that the vectorized version behaves exactly like the scalar one. You can take a look at the examples there and copy its structure!

These are the steps I have followed to implement those functions, and they could serve as a way to implement new vectorized versions of the remaining functions in TMath.

Result Analysis

In order to analyse the efficiency of the work done during the summer, some benchmarks have been implemented. We are gonna study here the test implemented in testGradient.cxx, that works also as a benchmark, measuring the speedups of the new implementations.

First of all, the specs of the machine where the implementations were benchmarked:

• Vectorial intruction set: SSE4.2
• Number of cores: 4

With this machine, I have benchmarked 9 different situations, all of them defined in testGradient.cxx by using the following three different scenarios for the three gradient evaluations modified —Chi2, LogLikelihood and PoissonLikelihood—:

• Scalar and multithread evaluation; i.e., the evaluation of the gradient is parallelized only in the data level by using several threads.
• Vectorial and serial evaluation; i.e., the evaluation of the gradient is parallelized in the instruction level by using vectorization techniques.
• Vectorial and multithread evaluation; i.e., the evaluation of the gradient is parallelized both in the data and instruction level by using several threads along with vectorization techniques.

Before discussing the numbers obtained, let’s see the ideal cases; i.e., how good can the new implementations be.

As the benchmarking machine implementes the SSE4.2 instruction set, the number of elements in a ROOT::Double_v, i.e., a vector of double, is 2. Then, a vectorized implementation of any code can be, at most, 2 times faster than a scalar implementation.

On the other hand, as the number of cores is 4, a multithread implementation can be, at most, 4 times faster than a serial implementation.

Combining these two cases, we know we can get evaluations 8 times faster than the scalar serial case in an ideal scenario where the vectorization and multithreading do not add any overhead.

The tests measure the time spent in the call of the Gradient method of Chi2FCN, LogLikelihoodFCN and PoissonLikelihoodFCN. This measure is repeated 1000 times in order to compute the mean time. Then, we can compute the speedup of the benchmarked cases with respect to the scalar serial case. The results of the benchmark in the described machine are summarised in the following graph:

As you can see, the orange bars show the speedup when using the multithread implementations. The yellow ones show the speedup of the vectorized implementations. Finally, the green bars show the speedups of the implementations that use both the multithread and vectorized techniques.

First of all, we can see that the vectorized implementation is nearly ideal, as all the speedups in the yellow bars are near 2. This can be explained because there is no branching in the vectorized implementations of the Gradient method and the overhead of the calls to the vectorial instructions is zero compared to the call to the scalar ones. Then, the ideal case is reached and a speedup of ~2 is obtained.

The multithread scenario is however not that close to the ideal case: the speedups obtained with the multithread policy —orange bars— are nearly 3, out of the ideal speedup of 4 we could obtain. This in turn lower the expectations for the vectorized and multithread case, where we obtain speedups slightly greater than 6 —green bars—, out of the ideal case of an 8x improvement.

As an initial analysis, it is clear that the calls to ROOT::TThreadExecutor methods add some overhead to the implementations, so the ideal case cannot be reached. This is expected; however, further analysis of the multithread case should be done, which would of course improve also the combined scenario.

For example, a future benchmark should measure how the number of chunks in which the data is separated affects the speedups, analyse the exact overhead of the ROOT::TThreadExecutor methods and study the map function implemented in the evaluations.

In conclusion, although there is still room for some improvement, the benchmark is in general very good, and the speedups obtained will be really useful to the final users.

Conclusions

This summer has been as fun as hard, I learned way more than I expected at the beginning —and I expected to learn a lot— and I am really happy to have contributed to this big complex interesting project. Furthermore, it has been awesome to work in it with my mentors Xavier and Lorenzo, to whom I have to thank all their help throughout these three months.

I have learned all kind of subtleties of C++, I have understood that I knew nothing about git until now, I have learned about processors, vectorization techniques and low-level issues I did not know they even existed, I have improved my communication skills with other developers, I have really grasped the idea of open source contribution in a big project… In conclusion, I have enjoyed the programme in so many levels that I am sure it will be one of the most useful experiences I will have —at least in the near future—.

I hope my work is useful for the ROOT users and that my code is clear enough for the developers that will have to read it in the future!


text:
# Question b369f

Dec 4, 2017

${\text{B"_2"H}}_{6}$

#### Explanation:

The idea here is that the molar mass of the compound will always be a multiple of the molar mass of its empirical formula.

In other words, if you multiply the molar mass of the empirical formula by a whole number, let's say $\textcolor{b l u e}{n}$, you will end up with the molar mass of the compound.

("BH"_ 3) xx color(blue)(n) = "B"_ color(blue)(n)"H"_ (3color(blue)(n))

So, you already know the molar mass of the empirical formula, so use the molar mass of boron and the molar mass of hydrogen to calculate the molar mass of the empirical formula--you can find the two molar masses in the Periodic Table.

${\text{BH"_3: " " "10.811 g mol"^(-1) + 3 xx "1.008 g mol"^(-1) = "13.835 g mol}}^{- 1}$

You can now set up your equation like this

${\text{13.835 g mol"^(-1) xx color(blue)(n) = "27.67 g mol}}^{- 1}$

This will get you

$\textcolor{b l u e}{n} = \left(27.67 \textcolor{red}{\cancel{\textcolor{b l a c k}{{\text{g mol"^(-1)))))/(13.835color(red)(cancel(color(black)("g mol}}^{- 1}}}}\right) = 1.998 \approx 2$

You can thus say that the molecular formula of the compound is

("BH"_ 3)_ color(blue)(2) => "B"_2"H"_6 -> # diborane