text:
# All Questions

45 views

### I discovered something, what do I do?

I've recently made a mathematical discovery and being still in high school I have no idea how to publish my discovery or who to tell. I told my teachers but that got me nowhere.
6 views

### convex optimization

Attached below is a convex problem. I just start learning this and is kind of confused of this question. I notice that the dom of W is convex, tr(WQ) is convex, the composition of convex functions ...
10 views

### Coming up with a function or a single graph, given its characteristics (pre-calculus) [on hold]

Give an example of a function or a single graph which has the following characteristics: (a) Hole at (3,-1). ...
28 views

### Conditions for existence of Penrose diagrams

A Penrose diagram (also known as a conformal diagram or Carter-Penrose diagram) is a technique for visualizing the causal (light-cone) structure of a 3+1-dimensional manifold. Usually the diagram is ...
24 views

### Resource needed on Lerch's transcendent

I am looking for resources in english which discuss basic properties of the Lerch's transcendent function. The Lerch Transcendant is defined by: ...
29 views

### Generating (or availability of) large strongly regular graphs

Are there collections of already generated large strongly regular graphs available to download? By large I mean $n >= 200$ where $n$ is the number of vertices. I found Ted Spence's page on srgs, ...
34 views

65 views

140 views

### Curvature of a finite metric space

I am sorry to ask a very vague question, but: What are good ways to define the curvature of a finite metric space? The best way I can think of is: the curvature of a finite metric space $M$ is ...
579 views

### Can I find Fermat's complete works anywhere?

I admire the mathematician very much and want to look at his writings. Is there anywhere in book or web form that has a collection of his writings?
54 views

### Chern classes of ideal sheaf of locally complete intersection

Let $C\varsubsetneq X$ be a reducible locally complete intersection closed pure $1$-dimensional subscheme in a smooth projective variety of dimension $3$ over a algebraically closed field $k$ of ...
17 views

### Quantification of the extent of periodicity in a time series using fractal analyses

Suppose I have a time series which is almost periodic. If I were to segment each of the visually most evident periods i.e. say of the longest period, I would find a strong mean cross-correlation among ...
56 views

### Eigenvalues of a random matrix [on hold]

For test cases i generated a random real uniform distributed matrix with entries from the intervall $[0,1]$. Here is the MATLAB Code i used ...
57 views

### cohomology ring of base-point-preserving maps on the 3-sphere

I find that $\text{Map}_*(S^3;S^3)=\Omega^3S^3$. I want to find the cohomology ring of $H^*(\Omega^3S^3;\mathbb{Z}_2)$. In the paper On configuration spaces, their homology, and Lie groups, I find ...
81 views

### How “small” can an ordinal be made by forcing?

I know that forcing essentially does not change the ordinals, but by small I mean in comparison with other ordinals whose definition might not be stable under forcing, like the smallest uncountable ...
35 views

### eigenvalues of cycle and its complement [on hold]

I am trying to find the eigenvalue of cycle graph and its complement. How to simplify.Suppose $\omega^{1}+\omega^{n-1}=2cos (2\pi/n)$, then, $\omega^{\frac{n-1}{2}}+\omega^{\frac{n+1}{2}}=?$ Is it ...
156 views

### indecomposable decomposition for a commutative ring

Let $R$ be a commutative ring with identity. We say that $R$ has an indecomposible decomposition if it can be wrighten as a finite direct sum of indecomposiable rings. Is there any characterization ...
83 views

### Can such categorical notion of action be formalized?

I'm wondering if it's possible to find an universal construction for a general concept of action for (single-sorted?) finite product sketches, such that one of those is "acting" on the second in the ...
130 views

### Example of measure of non-compactness

I can't understand the following example of measure of non-compactness, which was given in this article. Definition: A non-negative function $\phi$ defined on the bounded subsets of $X$ will be ...
420 views

### Category theory for Algebraic Geometry

How much of category theory should I know to view schemes, sheaves and cohomology concepts as concrete cases of abstract categorical concepts? Is there a textbook of category theory for AG people?
112 views

### bar construction and loop space cohomology

Let $X$ be a topological space. Then its chain complex $C_{*}(X)$ is naturally a coalgebra (as explained here Does homology have a coproduct?). In particular if $X$ is simply connected we have that ...
42 views


text:
# Tag Info

8

I suspect MolView simply fails to parse the compound's name you are trying to input. "Hydroxypropadiene" isn't the proper name, at least not by IUPAC standards. According to Google services, this name doesn't appear in any textbooks and is mentioned only in three research articles from 1980s. The PIN propa‐1,2‐dien‐1‐ol appears to work correctly with ...

3

It is safe to say that Barycenter is the correct spelling for the sought word. The other versions are artifact of the original word as some authors preferred to name (especially in the internet). Barycenter (or Barycentre in British English) is a commonly used term in astronomy and in chemistry (in Crystal Field Theory) as well. In both fields, it is used to ...

1

Assuming it is given that $\ce{X2O5}$ behaves like an ideal gas, the best approach to do this problem is manipulating $pv = nRT$ to get the equation, which fits the given data. Suppose $m$ is the mass of the gas, $M$ is the molar mass of the gas, and $\rho$ is the density of the gas. Then $n = \frac{m}{M}$:  pv = nRT = \frac{m}{M}RT \ \Rightarrow \ M = \...

1

Suppose two identical Daniell cells are connected with the zinc electrodes electrically connected through an amperemeter, and the two copper plates also electrically connected. Of course no currant will be measured by the ammeter. But the tension between the plate is independent on the connections. Now if one of the cell has a higher nominal voltage, maybe ...

Only top voted, non community-wiki answers of a minimum length are eligible

format: plain


text:
## Friday, September 07, 2012

### SRM 555: 5555555555555555555555

Yeah, I posted it in the TCO blog: http://community.topcoder.com/tco12/srm-555/. Let me talk of what was going on to me:

### Waking up at 6:30

I had it all planned up, and set things up to wake up at 6:30, so I could register (Really did not expect it to get any close to the registrants limit).

Unfortunately, I spent just about the whole period from 05:00 to 06:00 waking up to the same lame dream: that I missed the SRM. Only to find out that it was 5:00 and was way early. Arrg, I think it happened at least three times.

### Div1 255

Meh, it seems that my brain was not awake when I first tried to solve this problem. At first I thought it was about splitting in multiples of 5 instead of powers of 5. My first code even had funny tricks to avoid considering a single "0" as a number that begins with leading zeros... The whole plan was to simply get the results modulo 5 when translating bits to integer. It was so clever...

But it failed examples. So, it needed powers of five... I had to fix stuff, but had some lame bugs and it delayed me. At the end , 215 points. Is way too slow. My only hope was the div1 555...

### Div1 555

I actually saw the correct solution (although overcomplicated by dp for the sub-problem instead of even more binomials.) instantly. Of course, after coding everything here were bugs and bugs. I reached a state in which I was passing all examples but the second-last and third-last. Which was very puzzling, because the example that was seemingly the most complicated (last one) was correct. Surely, with 32 minutes left, I would eventually find the mistake, right? ... right?

I tried many things. I noticed the main difference between the examples I was passing and those I was not was that they were the only cases in which Rcount != Ccount, so I was trying to find any bugs related to it. Then I tried other things, and many others. But I effectively had 31 minutes with the same wrong code and no idea what to do. I even doubted the approach, but it really seemed right.

During the challenge phase, I checked out the other solutions and they were using the same logic. After some time off I opened it in the practice room, and could finally see the mistake right away. It is such a stupid mistake that it makes the drop to 18XX rating even more sad. You can see the code I had during the contest. The bug is with subProblem(er/2, Rcount) (and its column analogous), it should be: subProblem(er/2, H), of course, because the first expression makes no sense. I think I quickly replaced a different bug with Rcount and Ccount without putting a lot of thought and then completely missed it. I did not notice that it was also a main trait of the test cases I was failing, that W!=Rcount and H!=Ccount.

Anyway, this whole thing of SRMs made with mixed problem setters that turn out to have very easy div1 250 and div1 500 that everyone solves except for me that take too long or have bugs is really getting old. It is a perfect rating killing storm.

### Codes!

div 2 easy, is really easy:

int theMax(vector <string> board) {     int h = board.size(), w = board[0].size();     int res = 0;     // pick a row     for (int i=0; i<h; i++) {         // pick a column         for (int j=0; j<w; j++) {             int ones = 0;             // count the ones             for (int a=0; a<h; a++) {                 for (int b=0; b<w; b++) {                     // the xor operation ^, is great to simlate toggling...                     int o = ( (board[a][b]=='1') ^ (a==i) ^ (b==j) );                     ones += o;                 }             }             res = std::max(res, ones);         }     }     return res; }

div2 medium / div1 easy: The lack of a c++ library function to convert a integer to binary is really lame.

int getmin(string s) {     int n = s.size();     int dp[n+1];     dp[0] = 0;     int INF = 100;          // make the powers of 5:     long long p = 1;     string pow5[100];     int q = 1;     pow5[0] = bit(p); // the bit(x) function returns x in binary.     while (p <= (1LL<<62) / 5) {         p *= 5;         pow5[q] = bit(p);         q++;     }          // dp part:     for (int t=1; t<=n; t++) {         dp[t] = INF;         for (int i=0; i<q; i++) {             // does it end with the i-th power of 5?             int len = pow5[i].size();             if ( (t - len >= 0) && ( s.substr(t-len, len) == pow5[i] ) ) {                 //Yes. Yes, it does.                  dp[t] = std::min(dp[t], dp[t - len] + 1);             }         }     }     return ( (dp[n] >= INF) ? (-1) : dp[n] ); }

div2 hard: This guy was completely not standard and not easy (at least not for me.) I think I needed a lot of thought to reach the good method to do a dp program. Like I said in the TCO blog, it is all about what starting point you use for the analysis. I was trying bottom-up dp instead of top-down and it was a true nightmare. (For me, this is the hardest div2 hard in a while).

const int MOD = 555555555; typedef long long int64; #define long int64 long dp[555][554][2][2]; struct MuddyRoad2 {     int theCount(int N, int muddyCount)     {         memset(dp, 0, sizeof(dp) );         dp[0][0][1][1] = 1;         dp[0][0][0][0] = 1;                  //dp[i][m][p1][p2] returns the total number of ways         // to set muddy segments if:         // * We have already assigned segments higher than i         // * p1 is the parity of the number of paths for i+1         // * p2 is the parity of the number of paths for i+2         // * There are m muddy roads left to mark.         //         for (int i=1; i<=N-1; i++) {             for (int p1 = 0; p1 < 2; p1++) {                 for (int p2 = 0; p2 < 2; p2++) {                     for (int m=0; m<=muddyCount; m++) {                         long & res = dp[i][m][p1][p2];                         // do nothing                         res = dp[i-1][m][ (p1 ^ p2)  ][p1];                         // place a 0                         if ( (m > 0) && (i < N-1) ) {                             res += dp[i-1][m-1][0][p1];                             res %= MOD;                         }                     }                 }             }          }         // this way p1^p2 = 1 for i=N-1 :)         return dp[N-1][muddyCount][0][1];     } }; #undef long

Div1 medium: This dreaded problem was easy but that's not a good thing when you do it wrong for a lame reason and everyone else solves it.

 long C[3200][3200]; int count(int H, int W, int Rcount, int Ccount, int S) {     long res = 0;     memset(C, 0, sizeof(C));     // Pascal's triangle is a combinatorics problem coder's best friend     for (int i=0; i<=3199; i++) {         C[i][0] = 1;         for (int j=1; j<=i; j++) {             C[i][j] = (C[i-1][j-1] + C[i-1][j]) % MOD;         }     }     for (int r = (Rcount % 2); r <= Rcount && r <= H; r += 2) {         for (int c = (Ccount % 2); c <= Ccount && c <= W; c += 2) {             int tem = (H - r) * c + (W - c) * r;             if (tem == S) {                 cout << r << ", "<<c<<endl;                 int er = (Rcount - r)/2;  //extra                 int ec = (Ccount - c)/2;                 long prod = 1;                 prod = (prod * C[H][r]) % MOD;                 prod = (prod * C[W][c]) % MOD;                 prod = (prod * C[H-1 + er][H-1]) % MOD;                 prod = (prod * C[W-1 + ec][W-1]) % MOD;                 res += prod;             }         }     }     return (int)(res % MOD); }

Tm3dantes said...

Hi Vexorian,

I still don't understand SRM 555 Div 2 Hard. What does parity have to do with finding the number of ways?
For prob statement N=10 and muddyroads as 4, I counted the VALID number of ways you can have 4 muddy roads and be able to get through to the friend's house as 5. Do we also count the last 1 b/c the other 64 ways are INVALID? Also, I did a quick test with how many ways you can have 4 muddy roads in 8 slots, and came up with 70?

Thanks,
tm3

vexorian said...

The problem statement asks you to count the number of ways to assign the muddy road. So that the NUMBER OF WAYS to move from 0 to N-1 is EVEN.

So when I say parity, I mean the piirty OF the number of ways.

It is the same as saying "Calculate the number of ways" modulo 2.

So in fact f(x) is 0 if the number of ways to move from x to n-1 is even and 1 if it is odd.

When you see it as parity, then you can see that making a certain road muddy will make its number of ways to go from that road to n-1 ZERO and zero is even, so the parity is 0. Thus making a road segment muddy is the same as forcing the parity (the result of f(x) ) to be 0.

Otherwise, if we do not make the road segment muddy, then the parity of the number of ways to go from x to n-1 depends on : f(x+1) and f(x+2). Which takes us to the dp:

dp[x][m][p1][p2]

p1 is f(x+1) and p2 is f(x+2). So they are used to calculate the parity of f(x) in case we do not make the road muddy.

It means we have two choices:
* Make road x muddy: f(x) becomes 0 and m is reduced by 1.
* Do not make road x muddy: f(x) = ( f(x+1) + f(x + 2) ) % 2 = (p1 + p2)%2, m stays the same.

f(x) and p1 will become p1 and p2 for the next case.


text:
# Math Insight

### Introduction to a line integral of a scalar-valued function

A line integral (sometimes called a path integral) of a scalar-valued function can be thought of as a generalization of the one-variable integral of a function over an interval, where the interval can be shaped into a curve. A simple analogy that captures the essence of a scalar line integral is that of calculating the mass of a wire from its density.

If the density of a wire were constant, then one could calculate its mass by multiplying the density by the arc length of the curve. If, on the other hand, the density varies along the wire, one can use a procedure similar to that of calculating the arc length to derive a formula for the density. This formula defines of the line integral over the wire of the function giving the density.

Extending the slinky example used to introduce arc length, we let one coil of the slinky be parametrized by $\dllp(t) = (\cos t, \sin t, t)$, for $0 \le t \le 2\pi$, and imagine that the density of the slinky at the point $(x,y,z)$ is given by some function $\dlsi(x,y,z)$. This function describes how the slinky might be thicker in some parts and thinner in others. For a given value of $t$, a point on the slinky is $\dllp(t)$, and the density of the slinky at that point is $\dlsi(\dllp(t))$, as illustrated below.

Helix with variable density. The function $\dllp(t) = (\cos t, \sin t, t)$, for $0 \le t \le 2\pi$ parametrizes a helix. The blue curve representing the helix is drawn with a variable width, representing the varying density $\dlsi(x,y,z)$ of the helix at each point $(x,y,z)=\dllp(t)$ along its length. By dragging the cyan point representing $t$ on the slider, one can move the red point $\dllp(t)$ along the helix.

To calculate the mass of the slinky, we repeat the procedure we used to calculate its length. We pretend the slinky is composed by a bunch of straight line segments. Moreover, we assume each line segment has constant density, so the mass of the line segment is simply its length times its density. We let the density of each line segment be the density of the slinky at the point where the upper end of the line segment touches the slinky. (In the below applet, we use width of the curves to represent density.) For a given discretization $\Delta t$, we estimate the mass of the slinky as the total mass of the line segments (labeled as mass($\Delta t$)).

Line integral of helix mass from density. The function $\dllp(t) = (\cos t, \sin t, t)$, for $0 \le t \le 2\pi$ parametrizes a helix. The blue curve representing the helix is drawn with a variable width, representing the varying density $\dlsi(x,y,z)$ of the helix at each point $(x,y,z)=\dllp(t)$ along its length. The green line segments of constant width represent segments of constant density that approximate the helix. The discretization size of the line segments $\Delta t$ can be changed by moving the cyan point on the slider. As $\Delta t \to 0$, the mass of the line segment approximation, labeled mass($\Delta t$), approaches the actual mass of the helix.

We can increase the number of line segments (decreasing the length of each line segment) so that the total mass of the line segments becomes a better estimate of the slinky mass. As the discretization size $\Delta t$ approaches zero, the length of each line segment shrinks toward zero, the number of line segments increases, and the density of each line segment more closely approximates the density of the slinky. Since the total length of the line segments approaches the slinky length, the total mass of the line segments approaches the mass of the slinky.

The derivation of the line integral formula is similar to the procedure we used to estimate the slinky length. The length of the $i$th line segment can be written as $\|\dllp(t_i) - \dllp(t_{i-1})\|$. The density of the line segment is simply $\dlsi(\dllp(t_i))$ since $\dllp(t_i)$ is the point where the upper end of the line segment touches the slinky. The mass of the line segment is its density times its length: $\dlsi(\dllp(t_i))\|\dllp(t_i) - \dllp(t_{i-1})\|$. We obtain the total mass of the line segments by summing over all $n$ line segments: \begin{align*} \sum_i^n \dlsi(\dllp(t_i)) \| \dllp(t_i) - \dllp(t_{i-1})\|. \end{align*}

The only difference between the above expression and the one we obtained for arc length calculation is the $\dlsi(\dllp(t_i))$ factor. To turn this into an integral, we repeat the same steps we did on that page. We again let $\Delta t_i = t_i - t_{i-1}$, multiply and divide each term by $\Delta t_i$, and obtain the more complicated looking expression. \begin{align*} \sum_i^n \dlsi(\dllp(t_i))\| \dllp(t_i) - \dllp(t_{i-1})\| &= \sum_i^n\dlsi(\dllp(t_i)) \left\| \frac{\dllp(t_{i-1} + \Delta t_i) - \dllp(t_{i-1})}{\Delta t_i}\right\| \Delta t_i. \end{align*} Since the ugly expression in the $\| \cdot \|$ is the quantity in limit definition of the derivative of $\dllp(t)$, when we let $\Delta t_i \to 0$ and $n \to \infty$, the above Riemann sum converges to the integral \begin{align*} \int_a^b \dlsi(\dllp(t))\| \dllp\,'(t) \| dt, \end{align*} where $a=0$ and $b=2\pi$. This is called the line integral of $\dlsi$ over the curve parametrized by $\dllp$.

We often use $\als(t)$ to be the length of the slinky from the beginning point $\dllp(a)$ up to the point $\dllp(t)$. If you think of $d\als$ as being the length of a tiny line segment approximating the slinky, then the mass of that tiny line segment is $\dlsi$ times $d\als$. For this reason, we often denote the integral representing the mass of the slinky as \begin{align*} \slint{\dllp}{\dlsi} =\int_a^b \dlsi(\dllp(t))\| \dllp\,'(t) \| dt. \end{align*}

The notation $\slint{\dllp}{\dlsi}$ indicates that the integral of $\dlsi$ is over the parametrized curve $\dllp$. But, if the integral can really represent the mass of a wire with density $\dlsi$, then the mass should not depend on how we chose to parametrize the wire. In fact, it does not, and you can read about how the line integral is independent of the parametrization used to represent the curve.

You can also read some examples of calculating line integrals of scalar functions.


text:
# Binary quadratic programming

Printable View

• August 7th 2009, 10:47 AM
ponchdeleon
Binary quadratic programming
Hi everybody, I'm working on a problem quite similar to binary quadratic programming --> ( $SUM(i=1,...,n) SUM (j=1,...,n) q(i,j)x(i)x(j)$
where n is the number of variables and q(i,j) is a symmetric matrix.)

Actually, my problem seems to be more difficult: consider the BQP above and multiply it by $EXP( SUM (i=1,...,n) x(i) * ln P(i))$, where P(i) is a vector of constants.

Can it be considered a BQP problem too? If not, what is its name?

Thank you!


text:
OpenCV  3.4.8 Open Source Computer Vision

## Functions

void cv::denoise_TVL1 (const std::vector< Mat > &observations, Mat &result, double lambda=1.0, int niters=30)
Primal-dual algorithm is an algorithm for solving special types of variational problems (that is, finding a function to minimize some functional). As the image denoising, in particular, may be seen as the variational problem, primal-dual algorithm then can be used to perform denoising and this is exactly what is implemented. More...

void cv::cuda::fastNlMeansDenoising (InputArray src, OutputArray dst, float h, int search_window=21, int block_size=7, Stream &stream=Stream::Null())
Perform image denoising using Non-local Means Denoising algorithm http://www.ipol.im/pub/algo/bcm_non_local_means_denoising with several computational optimizations. Noise expected to be a gaussian white noise. More...

void cv::fastNlMeansDenoising (InputArray src, OutputArray dst, float h=3, int templateWindowSize=7, int searchWindowSize=21)
Perform image denoising using Non-local Means Denoising algorithm http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/ with several computational optimizations. Noise expected to be a gaussian white noise. More...

void cv::fastNlMeansDenoising (InputArray src, OutputArray dst, const std::vector< float > &h, int templateWindowSize=7, int searchWindowSize=21, int normType=NORM_L2)
Perform image denoising using Non-local Means Denoising algorithm http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/ with several computational optimizations. Noise expected to be a gaussian white noise. More...

void cv::cuda::fastNlMeansDenoisingColored (InputArray src, OutputArray dst, float h_luminance, float photo_render, int search_window=21, int block_size=7, Stream &stream=Stream::Null())
Modification of fastNlMeansDenoising function for colored images. More...

void cv::fastNlMeansDenoisingColored (InputArray src, OutputArray dst, float h=3, float hColor=3, int templateWindowSize=7, int searchWindowSize=21)
Modification of fastNlMeansDenoising function for colored images. More...

void cv::fastNlMeansDenoisingColoredMulti (InputArrayOfArrays srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, float h=3, float hColor=3, int templateWindowSize=7, int searchWindowSize=21)
Modification of fastNlMeansDenoisingMulti function for colored images sequences. More...

void cv::fastNlMeansDenoisingMulti (InputArrayOfArrays srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, float h=3, int templateWindowSize=7, int searchWindowSize=21)
Modification of fastNlMeansDenoising function for images sequence where consecutive images have been captured in small period of time. For example video. This version of the function is for grayscale images or for manual manipulation with colorspaces. For more details see http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.131.6394 More...

void cv::fastNlMeansDenoisingMulti (InputArrayOfArrays srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, const std::vector< float > &h, int templateWindowSize=7, int searchWindowSize=21, int normType=NORM_L2)
Modification of fastNlMeansDenoising function for images sequence where consecutive images have been captured in small period of time. For example video. This version of the function is for grayscale images or for manual manipulation with colorspaces. For more details see http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.131.6394 More...

void cv::cuda::nonLocalMeans (InputArray src, OutputArray dst, float h, int search_window=21, int block_size=7, int borderMode=BORDER_DEFAULT, Stream &stream=Stream::Null())
Performs pure non local means denoising without any simplification, and thus it is not fast. More...

## § denoise_TVL1()

 void cv::denoise_TVL1 ( const std::vector< Mat > & observations, Mat & result, double lambda = 1.0, int niters = 30 )
Python:
None=cv.denoise_TVL1(observations, result[, lambda[, niters]])

#include <opencv2/photo.hpp>

Primal-dual algorithm is an algorithm for solving special types of variational problems (that is, finding a function to minimize some functional). As the image denoising, in particular, may be seen as the variational problem, primal-dual algorithm then can be used to perform denoising and this is exactly what is implemented.

It should be noted, that this implementation was taken from the July 2013 blog entry [150] , which also contained (slightly more general) ready-to-use source code on Python. Subsequently, that code was rewritten on C++ with the usage of openCV by Vadim Pisarevsky at the end of July 2013 and finally it was slightly adapted by later authors.

Although the thorough discussion and justification of the algorithm involved may be found in [34], it might make sense to skim over it here, following [150] . To begin with, we consider the 1-byte gray-level images as the functions from the rectangular domain of pixels (it may be seen as set $$\left\{(x,y)\in\mathbb{N}\times\mathbb{N}\mid 1\leq x\leq n,\;1\leq y\leq m\right\}$$ for some $$m,\;n\in\mathbb{N}$$) into $$\{0,1,\dots,255\}$$. We shall denote the noised images as $$f_i$$ and with this view, given some image $$x$$ of the same size, we may measure how bad it is by the formula

$\left\|\left\|\nabla x\right\|\right\| + \lambda\sum_i\left\|\left\|x-f_i\right\|\right\|$

$$\|\|\cdot\|\|$$ here denotes $$L_2$$-norm and as you see, the first addend states that we want our image to be smooth (ideally, having zero gradient, thus being constant) and the second states that we want our result to be close to the observations we've got. If we treat $$x$$ as a function, this is exactly the functional what we seek to minimize and here the Primal-Dual algorithm comes into play.

Parameters
 observations This array should contain one or more noised versions of the image that is to be restored. result Here the denoised image will be stored. There is no need to do pre-allocation of storage space, as it will be automatically allocated, if necessary. lambda Corresponds to $$\lambda$$ in the formulas above. As it is enlarged, the smooth (blurred) images are treated more favorably than detailed (but maybe more noised) ones. Roughly speaking, as it becomes smaller, the result will be more blur but more sever outliers will be removed. niters Number of iterations that the algorithm will run. Of course, as more iterations as better, but it is hard to quantitatively refine this statement, so just use the default and increase it if the results are poor.

## § fastNlMeansDenoising() [1/3]

 void cv::cuda::fastNlMeansDenoising ( InputArray src, OutputArray dst, float h, int search_window = 21, int block_size = 7, Stream & stream = Stream::Null() )

#include <opencv2/photo/cuda.hpp>

Perform image denoising using Non-local Means Denoising algorithm http://www.ipol.im/pub/algo/bcm_non_local_means_denoising with several computational optimizations. Noise expected to be a gaussian white noise.

Parameters
 src Input 8-bit 1-channel, 2-channel or 3-channel image. dst Output image with the same size and type as src . h Parameter regulating filter strength. Big h value perfectly removes noise but also removes image details, smaller h value preserves details but also preserves some noise search_window Size in pixels of the window that is used to compute weighted average for given pixel. Should be odd. Affect performance linearly: greater search_window - greater denoising time. Recommended value 21 pixels block_size Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels stream Stream for the asynchronous invocations.

This function expected to be applied to grayscale images. For colored images look at FastNonLocalMeansDenoising::labMethod.

fastNlMeansDenoising

## § fastNlMeansDenoising() [2/3]

 void cv::fastNlMeansDenoising ( InputArray src, OutputArray dst, float h = 3, int templateWindowSize = 7, int searchWindowSize = 21 )
Python:
dst=cv.fastNlMeansDenoising(src[, dst[, h[, templateWindowSize[, searchWindowSize]]]])
dst=cv.fastNlMeansDenoising(src, h[, dst[, templateWindowSize[, searchWindowSize[, normType]]]])

#include <opencv2/photo.hpp>

Perform image denoising using Non-local Means Denoising algorithm http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/ with several computational optimizations. Noise expected to be a gaussian white noise.

Parameters
 src Input 8-bit 1-channel, 2-channel, 3-channel or 4-channel image. dst Output image with the same size and type as src . templateWindowSize Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels searchWindowSize Size in pixels of the window that is used to compute weighted average for given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels h Parameter regulating filter strength. Big h value perfectly removes noise but also removes image details, smaller h value preserves details but also preserves some noise

This function expected to be applied to grayscale images. For colored images look at fastNlMeansDenoisingColored. Advanced usage of this functions can be manual denoising of colored image in different colorspaces. Such approach is used in fastNlMeansDenoisingColored by converting image to CIELAB colorspace and then separately denoise L and AB components with different h parameter.

## § fastNlMeansDenoising() [3/3]

 void cv::fastNlMeansDenoising ( InputArray src, OutputArray dst, const std::vector< float > & h, int templateWindowSize = 7, int searchWindowSize = 21, int normType = NORM_L2 )
Python:
dst=cv.fastNlMeansDenoising(src[, dst[, h[, templateWindowSize[, searchWindowSize]]]])
dst=cv.fastNlMeansDenoising(src, h[, dst[, templateWindowSize[, searchWindowSize[, normType]]]])

#include <opencv2/photo.hpp>

Perform image denoising using Non-local Means Denoising algorithm http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/ with several computational optimizations. Noise expected to be a gaussian white noise.

Parameters
 src Input 8-bit or 16-bit (only with NORM_L1) 1-channel, 2-channel, 3-channel or 4-channel image. dst Output image with the same size and type as src . templateWindowSize Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels searchWindowSize Size in pixels of the window that is used to compute weighted average for given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels h Array of parameters regulating filter strength, either one parameter applied to all channels or one per channel in dst. Big h value perfectly removes noise but also removes image details, smaller h value preserves details but also preserves some noise normType Type of norm used for weight calculation. Can be either NORM_L2 or NORM_L1

This function expected to be applied to grayscale images. For colored images look at fastNlMeansDenoisingColored. Advanced usage of this functions can be manual denoising of colored image in different colorspaces. Such approach is used in fastNlMeansDenoisingColored by converting image to CIELAB colorspace and then separately denoise L and AB components with different h parameter.

## § fastNlMeansDenoisingColored() [1/2]

 void cv::cuda::fastNlMeansDenoisingColored ( InputArray src, OutputArray dst, float h_luminance, float photo_render, int search_window = 21, int block_size = 7, Stream & stream = Stream::Null() )

#include <opencv2/photo/cuda.hpp>

Modification of fastNlMeansDenoising function for colored images.

Parameters
 src Input 8-bit 3-channel image. dst Output image with the same size and type as src . h_luminance Parameter regulating filter strength. Big h value perfectly removes noise but also removes image details, smaller h value preserves details but also preserves some noise photo_render float The same as h but for color components. For most images value equals 10 will be enough to remove colored noise and do not distort colors search_window Size in pixels of the window that is used to compute weighted average for given pixel. Should be odd. Affect performance linearly: greater search_window - greater denoising time. Recommended value 21 pixels block_size Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels stream Stream for the asynchronous invocations.

The function converts image to CIELAB colorspace and then separately denoise L and AB components with given h parameters using FastNonLocalMeansDenoising::simpleMethod function.

fastNlMeansDenoisingColored

## § fastNlMeansDenoisingColored() [2/2]

 void cv::fastNlMeansDenoisingColored ( InputArray src, OutputArray dst, float h = 3, float hColor = 3, int templateWindowSize = 7, int searchWindowSize = 21 )
Python:
dst=cv.fastNlMeansDenoisingColored(src[, dst[, h[, hColor[, templateWindowSize[, searchWindowSize]]]]])

#include <opencv2/photo.hpp>

Modification of fastNlMeansDenoising function for colored images.

Parameters
 src Input 8-bit 3-channel image. dst Output image with the same size and type as src . templateWindowSize Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels searchWindowSize Size in pixels of the window that is used to compute weighted average for given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels h Parameter regulating filter strength for luminance component. Bigger h value perfectly removes noise but also removes image details, smaller h value preserves details but also preserves some noise hColor The same as h but for color components. For most images value equals 10 will be enough to remove colored noise and do not distort colors

The function converts image to CIELAB colorspace and then separately denoise L and AB components with given h parameters using fastNlMeansDenoising function.

## § fastNlMeansDenoisingColoredMulti()

 void cv::fastNlMeansDenoisingColoredMulti ( InputArrayOfArrays srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, float h = 3, float hColor = 3, int templateWindowSize = 7, int searchWindowSize = 21 )
Python:
dst=cv.fastNlMeansDenoisingColoredMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize[, dst[, h[, hColor[, templateWindowSize[, searchWindowSize]]]]])

#include <opencv2/photo.hpp>

Modification of fastNlMeansDenoisingMulti function for colored images sequences.

Parameters
 srcImgs Input 8-bit 3-channel images sequence. All images should have the same type and size. imgToDenoiseIndex Target image to denoise index in srcImgs sequence temporalWindowSize Number of surrounding images to use for target image denoising. Should be odd. Images from imgToDenoiseIndex - temporalWindowSize / 2 to imgToDenoiseIndex - temporalWindowSize / 2 from srcImgs will be used to denoise srcImgs[imgToDenoiseIndex] image. dst Output image with the same size and type as srcImgs images. templateWindowSize Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels searchWindowSize Size in pixels of the window that is used to compute weighted average for given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels h Parameter regulating filter strength for luminance component. Bigger h value perfectly removes noise but also removes image details, smaller h value preserves details but also preserves some noise. hColor The same as h but for color components.

The function converts images to CIELAB colorspace and then separately denoise L and AB components with given h parameters using fastNlMeansDenoisingMulti function.

## § fastNlMeansDenoisingMulti() [1/2]

 void cv::fastNlMeansDenoisingMulti ( InputArrayOfArrays srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, float h = 3, int templateWindowSize = 7, int searchWindowSize = 21 )
Python:
dst=cv.fastNlMeansDenoisingMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize[, dst[, h[, templateWindowSize[, searchWindowSize]]]])
dst=cv.fastNlMeansDenoisingMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize, h[, dst[, templateWindowSize[, searchWindowSize[, normType]]]])

#include <opencv2/photo.hpp>

Modification of fastNlMeansDenoising function for images sequence where consecutive images have been captured in small period of time. For example video. This version of the function is for grayscale images or for manual manipulation with colorspaces. For more details see http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.131.6394

Parameters
 srcImgs Input 8-bit 1-channel, 2-channel, 3-channel or 4-channel images sequence. All images should have the same type and size. imgToDenoiseIndex Target image to denoise index in srcImgs sequence temporalWindowSize Number of surrounding images to use for target image denoising. Should be odd. Images from imgToDenoiseIndex - temporalWindowSize / 2 to imgToDenoiseIndex - temporalWindowSize / 2 from srcImgs will be used to denoise srcImgs[imgToDenoiseIndex] image. dst Output image with the same size and type as srcImgs images. templateWindowSize Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels searchWindowSize Size in pixels of the window that is used to compute weighted average for given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels h Parameter regulating filter strength. Bigger h value perfectly removes noise but also removes image details, smaller h value preserves details but also preserves some noise

## § fastNlMeansDenoisingMulti() [2/2]

 void cv::fastNlMeansDenoisingMulti ( InputArrayOfArrays srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, const std::vector< float > & h, int templateWindowSize = 7, int searchWindowSize = 21, int normType = NORM_L2 )
Python:
dst=cv.fastNlMeansDenoisingMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize[, dst[, h[, templateWindowSize[, searchWindowSize]]]])
dst=cv.fastNlMeansDenoisingMulti(srcImgs, imgToDenoiseIndex, temporalWindowSize, h[, dst[, templateWindowSize[, searchWindowSize[, normType]]]])

#include <opencv2/photo.hpp>

Modification of fastNlMeansDenoising function for images sequence where consecutive images have been captured in small period of time. For example video. This version of the function is for grayscale images or for manual manipulation with colorspaces. For more details see http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.131.6394

Parameters
 srcImgs Input 8-bit or 16-bit (only with NORM_L1) 1-channel, 2-channel, 3-channel or 4-channel images sequence. All images should have the same type and size. imgToDenoiseIndex Target image to denoise index in srcImgs sequence temporalWindowSize Number of surrounding images to use for target image denoising. Should be odd. Images from imgToDenoiseIndex - temporalWindowSize / 2 to imgToDenoiseIndex - temporalWindowSize / 2 from srcImgs will be used to denoise srcImgs[imgToDenoiseIndex] image. dst Output image with the same size and type as srcImgs images. templateWindowSize Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels searchWindowSize Size in pixels of the window that is used to compute weighted average for given pixel. Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels h Array of parameters regulating filter strength, either one parameter applied to all channels or one per channel in dst. Big h value perfectly removes noise but also removes image details, smaller h value preserves details but also preserves some noise normType Type of norm used for weight calculation. Can be either NORM_L2 or NORM_L1

## § nonLocalMeans()

 void cv::cuda::nonLocalMeans ( InputArray src, OutputArray dst, float h, int search_window = 21, int block_size = 7, int borderMode = BORDER_DEFAULT, Stream & stream = Stream::Null() )

#include <opencv2/photo/cuda.hpp>

Performs pure non local means denoising without any simplification, and thus it is not fast.

Parameters
 src Source image. Supports only CV_8UC1, CV_8UC2 and CV_8UC3. dst Destination image. h Filter sigma regulating filter strength for color. search_window Size of search window. block_size Size of block used for computing weights. borderMode Border type. See borderInterpolate for details. BORDER_REFLECT101 , BORDER_REPLICATE , BORDER_CONSTANT , BORDER_REFLECT and BORDER_WRAP are supported for now. stream Stream for the asynchronous version.


text:
# "Powerful" inequality

Algebra Level 2

$\Large \color{blue}{n}^{\color{red}{200}} < \color{green}{5}^{\color{brown}{300}}$

Find the largest integer $$n$$ that satisfies the above inequality.

×


text:
## Tuesday, January 15, 2008

### India - a socialist secular democratic republic'?

This blog entry is joint work with Kaushik Krishnan.

A fascinating episode is taking place in, what I hope, is the unfolding improvement of the Indian constitution.

### Background

In 1951, the Representation of the People Act' was enacted, which demands that any political party must state, in an affidavit, that they would adhere to the principles of the preamble to the constitution.

Then the Constitution was amended in 1976 by the Constitution (Forty-Second) Amendment to put the word socialist' into the preamble. Combining these two facts implies that today in India, every political party is forced to adhere to the precepts of socialism. Barun Mitra tells this story in Mint, and you might like to read my earlier blog post on the Emergency of 1976.

### Socialism?

(Image credit). What does the word socialism' mean? Here are some definitions from dictionary.com and Merriam-Webster online:

Dictionary.com Unabridged
1. a theory or system of social organization that advocates the vesting of the ownership and control of the means of production and distribution, of capital, land, etc., in the community as a whole. 2. procedure or practice in accordance with this theory. 3.(in Marxist theory) the stage following capitalism in the transition of a society to communism, characterized by the imperfect implementation of collectivist principles.
American Heritage Dictionary
1. Any of various theories or systems of social organization in which the means of producing and distributing goods is owned collectively or by a centralized government that often plans and controls the economy. 2. The stage in Marxist-Leninist theory intermediate between capitalism and communism, in which collective ownership of the economy under the dictatorship of the proletariat has not yet been successfully achieved.
Wordnet
a political theory advocating state ownership of industry 2. an economic system based on state ownership of capital
American Heritage New Dictionary of Cultural Literacy
An economic system in which the production and distribution of goods are controlled substantially by the government rather than by private enterprise, and in which cooperation rather than competition guides economic activity. There are many varieties of socialism. Some socialists tolerate capitalism, as long as the government maintains the dominant influence over the economy; others insist on an abolition of private enterprise.
Merriam-Webster
1: any of various economic and political theories advocating collective or governmental ownership and administration of the means of production and distribution of goods 2 a: a system of society or group living in which there is no private property b: a system or condition of society in which the means of production are owned and controlled by the state 3: a stage of society in Marxist theory transitional between capitalism and communism and distinguished by unequal distribution of goods and pay according to work done

None of this seems, to me, to be a part of the idea of India.

### Challenge at the Supreme Court

The Supreme Court was recently asked to think about this situation by the Good Governance India Foundation'. See:

Fali Nariman, arguing for the petitioners, said that changing a word in the preamble amounts to changing the basic structure of the constitution and requires scrutiny as with the basic structure' doctrine. But this is going to be a tough argument to pull off since the Supreme Court has said that the objectives specified in the Preamble (socialism being one of them) contain the basic structure (Kesavananda Bharati v. Union of India, Excel Wear v. Union of India). Aparently some time ago, an attempt to revive the Swatantra Party was blocked by the election commission because this party was not willing to say that it adhered to socialism.

The bench, headed by Chief Justice K. G. Balakrishnan, refused, saying:

Why do you define socialism in the narrower sense as the communists do? ... Why don't you go by the broader definition which mandates the state to ensure social welfare measures for all the citizens as a facet of democracy?

I'm pretty clear that the word democracy' and the words social welfare' are very different and do not have to go together. The former is unquestionably the core idea of the modern State worldwide; the latter is a controversial vision of the State that originated in Europe and has been having a lot of trouble the world over. Perhaps our Chief Justice should consult a dictionary to know what socialism' means. Did he just blow a chance to make it into the history books?

The story that seems to be at work is that the words in the Preamble are defined by the Supreme Court through its judgments; dictionary meanings do not matter. The Court seems to have always favored defining socialism in loose, vague and highly idealistic terms. Indian socialism'' is said to be about what the Constitution of India wants to have for the people of India. In the past the Supreme Court has said that socialism is about ending poverty, ignorance, disease and inequality of opportunity. This socialist concept ought to be implemented in the true spirit of the Constitution (G.B. Pant University of Agriculture and Technology v. State of Uttar Pradesh). The Court has also said that the basic framework of socialism is to provide a decent standard of life and security to the working people (D.S. Nakara v. Union of India). As recently as last year, it was held that socialism is one of the systematic and structural principles underlying the Constitution (M. Nagraj v. Union of India).

I find it very odd, that the Constitution of a country utilises a word that has a certain mainstream meaning in the dictionaries, but that word actually means something different - on the ground - as compared with what any citizen would think. What do we want every citizen of India to think about what the Constitution of India says? Should the Constitution - or atleast the preamble to it! - not be written in plain English?

There has been a recent trend in which the Supreme Court has, only slightly, been promoting liberal ideas (State of Punjab v. Modern Breweries, BALCO Employees Union v. Union of India). But in most of these cases, the Court cleverly skirts the issue of socialism'.

Legal experts say the Court will never say that socialism should be deleted, for two reasons. The first, a reason that isn't as relevant today as it was during Mrs. Gandhi's rule, was the fear that judges who spoke out against State Policy would be transferred or superceded. The second reason is that the judiciary is not the organ of the State that can change the Constitution. At most, it can make sure that the Legislature creates law within the framework that the Constitution allows. But it cannot create law. More importantly it cannot delete law. But all hope is not yet lost, while the PIL that sought to remove socialism from the Constitution was dismissed, the PIL that seeks to remove the socialist ideology as a necessary requirement of all political parties has been admitted.

In the US, the original drafting of the Constitution was a brilliant one, and in 1791 the First Amendment was put into place which upholds freedom of speech. It was only in the 20th century that a series of judgments fashioned the full implications of the First Amendment into the defence of freedom of speech as we understand it today. This required courageous judges, who interpreted the (brilliant) text as meaning that the government cannot ban offensive speech, except to prevent a threat of serious and imminent harm. We can yearn for such judges. But the courts can only follow up on sound drafting by seeing it through to the full consequences. The drafting has to first be sound. In India's case, we have had a weak starting point to start with, and a history of faulty amendments.

### Fixing the preamble vs. fixing the RPA

In the great two-part article by Shubhankar Dam mentioned above, he says:

Incidentally, a proposal to amend the RPA and delete the reference to socialism was introduced in the Parliament in 2005. In a remarkable speech in the Upper House of Parliament, MP Anantrao Joshi submitted eight arguments for amending the RPA and deleting the socialist pledge.

First, India's freedom struggle, Joshi said, did not have any significant connections with socialist ideology. Neither Gandhi nor Patel expressed any sympathies for socialism. Patel, on the contrary, he said, compared the socialist in India to a dog walking under the bullock cart, which thinks that it is driving the bullock cart. And while Nehru was personally committed to socialism, he acknowledged that the majority in the Congress party did not share his views.

And this opposition to socialism, he added, explains why the word was omitted from the Constitution in its original text. Socialism was inserted only in 1977 as an afterthought by some vested political interests.

Secondly, his opposition to socialism, Joshi said, was borne out of his belief in the right to dissent. I am not an anti-socialist, he declared. But it was only after visiting the erstwhile USSR that he came to realise the significance of his right to dissent, of protecting his right not to be a socialist. By necessarily requiring every political party to swear by socialism, the RPA, he said, did not allow space for disagreeing with socialism.

Thirdly, his opposition to socialism, he said, was borne out of personal experience. Based on his belief that state intervention in artificially controlling the prices of agricultural commodities was detrimental to the interests of farmers, he decided to form a political party to lobby for the interests of the farmers in India. But his application was rejected by the Election Commission because he refused to affirm his commitment to socialism. Swearing by socialism to gain the status of a political party would be rank dishonesty, he said, and he did not want to do that.

Fourthly, the RPA, he thought, promoted hypocrisy. There were many parties in India that did not believe in secularism. And similarly, there were many left-wing parties that did not believe in democracy. And yet the Election Commission was reluctant to act against them because they had, even if falsely, sworn to uphold secularism and democracy respectively. The law, he argued, should not reward (or tolerate) hypocrisy while penalising honesty.

Fifthly, a mere commitment to socialism meant nothing. The term, he thought, was incorrigibly vague and has been applied to a large spectrum of theories over the last two centuries. The term has been associated with a wide number of thinkers including Saint Simon, Robert Owen, GB Shaw, GDH Cole and John Keynes. However, when used without any qualifications, the term socialism, he added, is interpreted to refer to the system of thought propagated by Marx, Engels and supplemented by lesser prophets like Lenin, and Stalin.

And certain traits of mainstream theory of socialism, according to him, were clearly opposed, if not repugnant to the basic principles and structure of the Constitution of India: for example, class-contradiction, atheism, and dictatorship of the proletariat. In other words, socialism at best was too vague and at worst contradictory to the basic principles of the Indian Constitution.

Sixthly, the RPA, he argued, was violative of the right to equality. Individuals taking oath to hold public offices under the Constitution do not need to affirm their commitment to socialism: they merely affirm their true faith and allegiance to the Constitution. But political parties cannot be recognised unless they specifically affirm their commitment to socialism and this, he thought, was violative of the right to equality under Article 14.

Seventhly, the RPA, he argued was also discriminatory. Only parties had to affirm their belief in socialism. The RPA did not require individuals desiring to stand for elections to make any commitment to socialism. This differentiation, he thought, was wholly arbitrary and violative of the right to equality.

Finally, Joshi submitted that by tying all political parties to a particular economic ideology, the law denied the possibility of change by legal means. By appropriating the entire legal space for socialism, the RPA, he said, left no room for advocating change.

This meant that the RPA prevents committed and sincere non-socialists from agitating as an organised force and trying to get the Constitution modified in their favour by entering the Legislative State Assemblies as also the Parliament.

Not surprisingly, Joshi's arguments created a tumult in the Upper House: many staunchly opposed his amendment. EM Sudarsana and Jairam Ramesh reiterated the usual socialist banter about social and economic justice and riled against the exploitative nature of capitalism.

And with Anantrao Joshi refusing to withdraw the amendment, the proposal was put to vote. The motion was negatived: majority of the members voted against it (i.e., they voted in favour of retaining socialism in the RPA).

Why? As Indias foremost criminal lawyer, Ram Jethmalani, pointed out during the debates: To oppose socialism is a very unpopular thing. While in personal agreement with Joshi's argument, he advised his friend to withdraw the amendment: I want to tell my friend, he said he has no chance of getting this Bill through this Parliament.

But, he added, in the Supreme Court of India, [Joshi] is bound to succeed on the constitutionality of the provision. A conscientious NGO has finally brought the matter to the SC.

### A new liberal philosophy?

While one gets these disappointing statements from the Supreme Court, there are also some very interesting things going on. As an example, see Requiem for a principle by M. J. Antony in Business Standard which describes how the Supreme Court has nicely buried the notion that the State should enforce the notion that two people should get the same pay for the same work:

Though the Constitution asserts that the Directive Principles of State Policy listed in Part IV are not enforceable and are guiding principles in making laws, a zealous Supreme Court once tried to elevate one of them to the status of a fundamental right. In 1982, the Supreme Court ruled in the case of a bus driver of Delhi, that though the principle of equal pay for equal work is a directive principle, it could be considered as a fundamental right of the workers (Randhir Singh vs Union of India). It was the first and last time that a directive principle was anointed with the sanctity of a fundamental right. The experiment has failed, as recent judgements of the Supreme Court show.

The latest judgement delivered in the case of a tractor driver of Punjab (State of Punjab vs Surinder Singh) diluted the principle so much that it has been emptied of all practical utility. The court summed up the position thus: The principle of equal pay for equal work has undergone a sea change. Earlier the view of the Supreme Court was that if two persons are discharging the same functions, they will be entitled to the same wages. Subsequently this view has been changed and now the view of this court is that there should be complete and total identity between the two persons similarly situated so as to grant equal pay for equal work.

The court began having second thoughts on the application of its own principle in the nineties. In State of Haryana vs Jasmer Singh (1997), it observed that the principle was not easy to apply. There are inherent difficulties in comparing and evaluating the work of different persons in different organisations. Persons doing the same work may have different degrees of responsibilities, reliabilities and confidentialities, and this would be sufficient for a valid differentiation, the judgement explained. The court, therefore, left the decision to the administrative wisdom and bonafides of the employers, though it would be a value judgement.

This year saw further assaults on the principle. In the Indian Drugs & Pharmaceuticals case, the Supreme Court stated that granting pay scales is a purely executive function and the court should not interfere with it. It may have a cascading effect, creating all kinds of problems for the government and employers. In SC Chandra vs State of Jharkand, involving the staff of schools run by Hindustan Copper Corporation and Bharat Coking Coal Ltd, the court openly said that the principle was creating havoc. All over the country, different groups were claiming parity in pay with other groups.

The Supreme Court went so far as to say that if the court enforced the principle, it would violate the principle of separation of powers enshrined in the Constitution. Citing Madison, it said that all power was of an encroaching nature and judicial power is not immune to this human weakness. It must also guard against encroaching beyond its proper bounds, and not the less so since the only restraint upon it is self-restraint.

The court, therefore, recommends that the judiciary should keep out of the field. The equation of posts and salary is a complex matter which should be left to an expert body, it said in State of Haryana vs Secretariat Personal Staff Assn. The courts must realise that the job is both difficult and time-consuming which even experts having the assistance of staff with requisite expertise have found difficult to undertake.

Another area where a recent judgment suggests some new ideas are in the air was about women working in bars.

LaTeX mathematics works. This means that if you want to say $10 you have to say \$10.


text:
Copied to
clipboard

## G = C3×C8○2M4(2)  order 192 = 26·3

### Direct product of C3 and C8○2M4(2)

direct product, metabelian, nilpotent (class 2), monomial, 2-elementary

Series: Derived Chief Lower central Upper central

 Derived series C1 — C2 — C3×C8○2M4(2)
 Chief series C1 — C2 — C22 — C2×C4 — C2×C12 — C2×C24 — C4×C24 — C3×C8○2M4(2)
 Lower central C1 — C2 — C3×C8○2M4(2)
 Upper central C1 — C2×C24 — C3×C8○2M4(2)

Generators and relations for C3×C82M4(2)
G = < a,b,c,d | a3=b8=d2=1, c4=b4, ab=ba, ac=ca, ad=da, bc=cb, bd=db, dcd=b4c >

Subgroups: 146 in 130 conjugacy classes, 114 normal (30 characteristic)
C1, C2, C2, C2, C3, C4, C4, C4, C22, C22, C22, C6, C6, C6, C8, C2×C4, C2×C4, C23, C12, C12, C12, C2×C6, C2×C6, C2×C6, C42, C22⋊C4, C4⋊C4, C2×C8, C2×C8, M4(2), C22×C4, C24, C2×C12, C2×C12, C22×C6, C4×C8, C8⋊C4, C42⋊C2, C22×C8, C2×M4(2), C4×C12, C3×C22⋊C4, C3×C4⋊C4, C2×C24, C2×C24, C3×M4(2), C22×C12, C82M4(2), C4×C24, C3×C8⋊C4, C3×C42⋊C2, C22×C24, C6×M4(2), C3×C82M4(2)
Quotients: C1, C2, C3, C4, C22, C6, C2×C4, C23, C12, C2×C6, C42, C22×C4, C2×C12, C22×C6, C2×C42, C8○D4, C4×C12, C22×C12, C82M4(2), C2×C4×C12, C3×C8○D4, C3×C82M4(2)

Smallest permutation representation of C3×C82M4(2)
On 96 points
Generators in S96
(1 20 61)(2 21 62)(3 22 63)(4 23 64)(5 24 57)(6 17 58)(7 18 59)(8 19 60)(9 29 70)(10 30 71)(11 31 72)(12 32 65)(13 25 66)(14 26 67)(15 27 68)(16 28 69)(33 74 82)(34 75 83)(35 76 84)(36 77 85)(37 78 86)(38 79 87)(39 80 88)(40 73 81)(41 55 90)(42 56 91)(43 49 92)(44 50 93)(45 51 94)(46 52 95)(47 53 96)(48 54 89)
(1 2 3 4 5 6 7 8)(9 10 11 12 13 14 15 16)(17 18 19 20 21 22 23 24)(25 26 27 28 29 30 31 32)(33 34 35 36 37 38 39 40)(41 42 43 44 45 46 47 48)(49 50 51 52 53 54 55 56)(57 58 59 60 61 62 63 64)(65 66 67 68 69 70 71 72)(73 74 75 76 77 78 79 80)(81 82 83 84 85 86 87 88)(89 90 91 92 93 94 95 96)
(1 41 73 66 5 45 77 70)(2 42 74 67 6 46 78 71)(3 43 75 68 7 47 79 72)(4 44 76 69 8 48 80 65)(9 20 55 81 13 24 51 85)(10 21 56 82 14 17 52 86)(11 22 49 83 15 18 53 87)(12 23 50 84 16 19 54 88)(25 57 94 36 29 61 90 40)(26 58 95 37 30 62 91 33)(27 59 96 38 31 63 92 34)(28 60 89 39 32 64 93 35)
(1 75)(2 76)(3 77)(4 78)(5 79)(6 80)(7 73)(8 74)(9 53)(10 54)(11 55)(12 56)(13 49)(14 50)(15 51)(16 52)(17 88)(18 81)(19 82)(20 83)(21 84)(22 85)(23 86)(24 87)(25 92)(26 93)(27 94)(28 95)(29 96)(30 89)(31 90)(32 91)(33 60)(34 61)(35 62)(36 63)(37 64)(38 57)(39 58)(40 59)(41 72)(42 65)(43 66)(44 67)(45 68)(46 69)(47 70)(48 71)

G:=sub<Sym(96)| (1,20,61)(2,21,62)(3,22,63)(4,23,64)(5,24,57)(6,17,58)(7,18,59)(8,19,60)(9,29,70)(10,30,71)(11,31,72)(12,32,65)(13,25,66)(14,26,67)(15,27,68)(16,28,69)(33,74,82)(34,75,83)(35,76,84)(36,77,85)(37,78,86)(38,79,87)(39,80,88)(40,73,81)(41,55,90)(42,56,91)(43,49,92)(44,50,93)(45,51,94)(46,52,95)(47,53,96)(48,54,89), (1,2,3,4,5,6,7,8)(9,10,11,12,13,14,15,16)(17,18,19,20,21,22,23,24)(25,26,27,28,29,30,31,32)(33,34,35,36,37,38,39,40)(41,42,43,44,45,46,47,48)(49,50,51,52,53,54,55,56)(57,58,59,60,61,62,63,64)(65,66,67,68,69,70,71,72)(73,74,75,76,77,78,79,80)(81,82,83,84,85,86,87,88)(89,90,91,92,93,94,95,96), (1,41,73,66,5,45,77,70)(2,42,74,67,6,46,78,71)(3,43,75,68,7,47,79,72)(4,44,76,69,8,48,80,65)(9,20,55,81,13,24,51,85)(10,21,56,82,14,17,52,86)(11,22,49,83,15,18,53,87)(12,23,50,84,16,19,54,88)(25,57,94,36,29,61,90,40)(26,58,95,37,30,62,91,33)(27,59,96,38,31,63,92,34)(28,60,89,39,32,64,93,35), (1,75)(2,76)(3,77)(4,78)(5,79)(6,80)(7,73)(8,74)(9,53)(10,54)(11,55)(12,56)(13,49)(14,50)(15,51)(16,52)(17,88)(18,81)(19,82)(20,83)(21,84)(22,85)(23,86)(24,87)(25,92)(26,93)(27,94)(28,95)(29,96)(30,89)(31,90)(32,91)(33,60)(34,61)(35,62)(36,63)(37,64)(38,57)(39,58)(40,59)(41,72)(42,65)(43,66)(44,67)(45,68)(46,69)(47,70)(48,71)>;

G:=Group( (1,20,61)(2,21,62)(3,22,63)(4,23,64)(5,24,57)(6,17,58)(7,18,59)(8,19,60)(9,29,70)(10,30,71)(11,31,72)(12,32,65)(13,25,66)(14,26,67)(15,27,68)(16,28,69)(33,74,82)(34,75,83)(35,76,84)(36,77,85)(37,78,86)(38,79,87)(39,80,88)(40,73,81)(41,55,90)(42,56,91)(43,49,92)(44,50,93)(45,51,94)(46,52,95)(47,53,96)(48,54,89), (1,2,3,4,5,6,7,8)(9,10,11,12,13,14,15,16)(17,18,19,20,21,22,23,24)(25,26,27,28,29,30,31,32)(33,34,35,36,37,38,39,40)(41,42,43,44,45,46,47,48)(49,50,51,52,53,54,55,56)(57,58,59,60,61,62,63,64)(65,66,67,68,69,70,71,72)(73,74,75,76,77,78,79,80)(81,82,83,84,85,86,87,88)(89,90,91,92,93,94,95,96), (1,41,73,66,5,45,77,70)(2,42,74,67,6,46,78,71)(3,43,75,68,7,47,79,72)(4,44,76,69,8,48,80,65)(9,20,55,81,13,24,51,85)(10,21,56,82,14,17,52,86)(11,22,49,83,15,18,53,87)(12,23,50,84,16,19,54,88)(25,57,94,36,29,61,90,40)(26,58,95,37,30,62,91,33)(27,59,96,38,31,63,92,34)(28,60,89,39,32,64,93,35), (1,75)(2,76)(3,77)(4,78)(5,79)(6,80)(7,73)(8,74)(9,53)(10,54)(11,55)(12,56)(13,49)(14,50)(15,51)(16,52)(17,88)(18,81)(19,82)(20,83)(21,84)(22,85)(23,86)(24,87)(25,92)(26,93)(27,94)(28,95)(29,96)(30,89)(31,90)(32,91)(33,60)(34,61)(35,62)(36,63)(37,64)(38,57)(39,58)(40,59)(41,72)(42,65)(43,66)(44,67)(45,68)(46,69)(47,70)(48,71) );

G=PermutationGroup([[(1,20,61),(2,21,62),(3,22,63),(4,23,64),(5,24,57),(6,17,58),(7,18,59),(8,19,60),(9,29,70),(10,30,71),(11,31,72),(12,32,65),(13,25,66),(14,26,67),(15,27,68),(16,28,69),(33,74,82),(34,75,83),(35,76,84),(36,77,85),(37,78,86),(38,79,87),(39,80,88),(40,73,81),(41,55,90),(42,56,91),(43,49,92),(44,50,93),(45,51,94),(46,52,95),(47,53,96),(48,54,89)], [(1,2,3,4,5,6,7,8),(9,10,11,12,13,14,15,16),(17,18,19,20,21,22,23,24),(25,26,27,28,29,30,31,32),(33,34,35,36,37,38,39,40),(41,42,43,44,45,46,47,48),(49,50,51,52,53,54,55,56),(57,58,59,60,61,62,63,64),(65,66,67,68,69,70,71,72),(73,74,75,76,77,78,79,80),(81,82,83,84,85,86,87,88),(89,90,91,92,93,94,95,96)], [(1,41,73,66,5,45,77,70),(2,42,74,67,6,46,78,71),(3,43,75,68,7,47,79,72),(4,44,76,69,8,48,80,65),(9,20,55,81,13,24,51,85),(10,21,56,82,14,17,52,86),(11,22,49,83,15,18,53,87),(12,23,50,84,16,19,54,88),(25,57,94,36,29,61,90,40),(26,58,95,37,30,62,91,33),(27,59,96,38,31,63,92,34),(28,60,89,39,32,64,93,35)], [(1,75),(2,76),(3,77),(4,78),(5,79),(6,80),(7,73),(8,74),(9,53),(10,54),(11,55),(12,56),(13,49),(14,50),(15,51),(16,52),(17,88),(18,81),(19,82),(20,83),(21,84),(22,85),(23,86),(24,87),(25,92),(26,93),(27,94),(28,95),(29,96),(30,89),(31,90),(32,91),(33,60),(34,61),(35,62),(36,63),(37,64),(38,57),(39,58),(40,59),(41,72),(42,65),(43,66),(44,67),(45,68),(46,69),(47,70),(48,71)]])

120 conjugacy classes

 class 1 2A 2B 2C 2D 2E 3A 3B 4A 4B 4C 4D 4E ··· 4N 6A ··· 6F 6G 6H 6I 6J 8A ··· 8H 8I ··· 8T 12A ··· 12H 12I ··· 12AB 24A ··· 24P 24Q ··· 24AN order 1 2 2 2 2 2 3 3 4 4 4 4 4 ··· 4 6 ··· 6 6 6 6 6 8 ··· 8 8 ··· 8 12 ··· 12 12 ··· 12 24 ··· 24 24 ··· 24 size 1 1 1 1 2 2 1 1 1 1 1 1 2 ··· 2 1 ··· 1 2 2 2 2 1 ··· 1 2 ··· 2 1 ··· 1 2 ··· 2 1 ··· 1 2 ··· 2

120 irreducible representations

 dim 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 type + + + + + + image C1 C2 C2 C2 C2 C2 C3 C4 C4 C4 C4 C6 C6 C6 C6 C6 C12 C12 C12 C12 C8○D4 C3×C8○D4 kernel C3×C8○2M4(2) C4×C24 C3×C8⋊C4 C3×C42⋊C2 C22×C24 C6×M4(2) C8○2M4(2) C3×C22⋊C4 C3×C4⋊C4 C2×C24 C3×M4(2) C4×C8 C8⋊C4 C42⋊C2 C22×C8 C2×M4(2) C22⋊C4 C4⋊C4 C2×C8 M4(2) C6 C2 # reps 1 2 2 1 1 1 2 4 4 8 8 4 4 2 2 2 8 8 16 16 8 16

Matrix representation of C3×C82M4(2) in GL4(𝔽73) generated by

 1 0 0 0 0 64 0 0 0 0 1 0 0 0 0 1
,
 72 0 0 0 0 72 0 0 0 0 51 0 0 0 0 51
,
 27 0 0 0 0 72 0 0 0 0 51 0 0 0 53 22
,
 1 0 0 0 0 72 0 0 0 0 72 46 0 0 0 1
G:=sub<GL(4,GF(73))| [1,0,0,0,0,64,0,0,0,0,1,0,0,0,0,1],[72,0,0,0,0,72,0,0,0,0,51,0,0,0,0,51],[27,0,0,0,0,72,0,0,0,0,51,53,0,0,0,22],[1,0,0,0,0,72,0,0,0,0,72,0,0,0,46,1] >;

C3×C82M4(2) in GAP, Magma, Sage, TeX

C_3\times C_8\circ_2M_4(2)
% in TeX

G:=Group("C3xC8o2M4(2)");
// GroupNames label

G:=SmallGroup(192,838);
// by ID

G=gap.SmallGroup(192,838);
# by ID

G:=PCGroup([7,-2,-2,-2,-3,-2,-2,-2,168,344,1059,172]);
// Polycyclic

G:=Group<a,b,c,d|a^3=b^8=d^2=1,c^4=b^4,a*b=b*a,a*c=c*a,a*d=d*a,b*c=c*b,b*d=d*b,d*c*d=b^4*c>;
// generators/relations

׿
×
𝔽